0

我正在 MAMP 上构建我的网站,几天后我终于得到了一个 .htaccess 文件,可以按照我的意愿工作。但是现在当我上传到实时环境时,它的行为就不一样了!有不同的版本吗?是因为我的文件中的错误导致 MAMP 自动处理吗?

如果不是这些特殊文件,则使用默认的 RewriteRule。scripts/images/mediacontent/services/robot.txt 有效但无效(login.php、hybridauth、blog)

#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]
4

2 回答 2

0

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

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

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

于 2013-04-22T18:04:02.940 回答
0

使用\w+,您不会捕获完整的请求,而只会捕获其中的一部分。

转义序列

\w
任何“单词”字符

“单词”字符是任何字母或数字或下划线字符

这意味着不包括点.、斜线/、连字符-或下划线以外的任何其他特殊字符_

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

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

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

于 2013-04-22T16:24:49.410 回答