2013-04-22 23 views
0

我在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] 
+0

对于那些不起作用的东西,我会得到“302 Moved Temporarily” – Backer 2013-04-22 16:13:21

回答

0

随着\w+,你不捕获完整的请求,但它只是某些部分。

Escape sequences

\瓦特
任何 “字” 的字符

A “字” 的字符是任何字母或数字或下划线字符

这意味着,点. ,斜线/,连字符-或下划线_旁边的任何其他特殊字符包括在内。

从条件看来,您希望从规则中排除所有现有的文件和目录。你可以达到同样的用

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ index.php?page=$0 [L] 

此规则捕获完整路径,包括任何特殊字符,并将这index.php。但它也排除了所有真实的文件,如Javascript来源,CSS文件,图像等。

+0

和我的一样,但代码少得多:) 问题仍然出现在文件夹hybridauth和博客中。它可以与这些文件夹中的内容有关吗? 博客 - 永久链接的WordPress的文件夹。 hybridauth - 有一个应该捕获登录的index.php文件。 这些文件夹和文件被忽略,我显示/index.php?page=结果 – Backer 2013-04-22 17:12:18

+0

去http://www.mysite.com/blog/index.php给我一个“500内部服务器错误”和http://www.mysite.com/hybridauth/给出“302暂时移动” – Backer 2013-04-22 17:17:58

+0

现在终于奏效了。我删除了实时环境中的所有文件,然后再次上传。必须是第一次上传时添加的一些奇怪的东西。 – Backer 2013-04-22 18:02:30

0

删除所有.htaccess文件后,我注意到问题不在重写中。

我删除了服务器上的所有文件,并再次上传,现在它可以正常工作。

自我注意:使用一个良好的FTP应用程序。