.htaccess MAMP与生活环境的差异
我在MAMP上建立我的网站,几天后,我终于有了一个.htaccess文件,可以在我的意志之后工作。但是现在,当我上传到现场环境时,它的行为并不一样!有不同的版本吗?是否因为我的文件中的错误MAMP处理自动?.htaccess MAMP与生活环境的差异
如果不是这些特殊文件,则使用默认的RewriteRule。脚本/图片/ mediacontent /服务/ robot.txt的作品,但NOT(login.php中,hybridauth,博客)
#start
Options +FollowSymlinks
RewriteEngine On
RewriteBase/
# main site
RewriteCond %{REQUEST_URI} !^/scripts/(.*\.js)$
RewriteCond %{REQUEST_URI} !^/styles/(.*\.css)$
RewriteCond %{REQUEST_URI} !^/images/(.*\.jpg|.*\.png|.*\.gif)$
RewriteCond %{REQUEST_URI} !^/mediacontent/(.*\.jpg|.*\.png)$ [NC]
RewriteCond %{REQUEST_URI} !^/services/(.*\.php)$
RewriteCond %{REQUEST_URI} !^/login\.php$
RewriteCond %{REQUEST_URI} !^/hybridauth/$
RewriteCond %{REQUEST_URI} !^/blog/$ [NC]
RewriteCond %{REQUEST_URI} !^/robot.txt$
RewriteRule (\w+) index.php?page=$1 [NC,L]
随着\w+
,你不捕获完整的请求,但它只是某些部分。
\瓦特
任何 “字” 的字符A “字” 的字符是任何字母或数字或下划线字符
这意味着,点.
,斜线/
,连字符-
或下划线_
旁边的任何其他特殊字符包括在内。
从条件看来,您希望从规则中排除所有现有的文件和目录。你可以达到同样的用
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php?page=$0 [L]
此规则捕获完整路径,包括任何特殊字符,并将这index.php
。但它也排除了所有真实的文件,如Javascript来源,CSS文件,图像等。
和我的一样,但代码少得多:) 问题仍然出现在文件夹hybridauth和博客中。它可以与这些文件夹中的内容有关吗? 博客 - 永久链接的WordPress的文件夹。 hybridauth - 有一个应该捕获登录的index.php文件。 这些文件夹和文件被忽略,我显示/index.php?page=结果 – Backer 2013-04-22 17:12:18
去http://www.mysite.com/blog/index.php给我一个“500内部服务器错误”和http://www.mysite.com/hybridauth/给出“302暂时移动” – Backer 2013-04-22 17:17:58
现在终于奏效了。我删除了实时环境中的所有文件,然后再次上传。必须是第一次上传时添加的一些奇怪的东西。 – Backer 2013-04-22 18:02:30
删除所有.htaccess文件后,我注意到问题不在重写中。
我删除了服务器上的所有文件,并再次上传,现在它可以正常工作。
自我注意:使用一个良好的FTP应用程序。
对于那些不起作用的东西,我会得到“302 Moved Temporarily” – Backer 2013-04-22 16:13:21