0

您好,我在我建立的个人网站上有一个用于 seo 友好 url 的 mod_rewrite 脚本。该脚本运行良好,直到我注意到我无法访问我的管理文件夹,该文件夹是服务器上的真实目录。在我进行第一次更改之前,.htacsess 看起来像这样。


Options +SymLinksIfOwnerMatch
RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteRule \.(css|jpe?g|gif|png|js)$ - [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f


RewriteRule ^(.*)$ index.php?page=$1
RewriteRule ^(.*)/(.*)$ index.php?page=$1 

所以我修改了脚本并添加了第二组这两个规则:

RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f

就在最后一条规则之前,所以它看起来像这样,没有前 4 行代码:

RewriteRule \.(css|jpe?g|gif|png|js)$ - [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php?page=$1

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)/(.*)$ index.php?page=$1 

一旦我这样做了,我就能够访问管理目录,但现在内容不会显示在第二级链接上,所以看起来最后一条规则被忽略了。

任何人都可以帮我看看我做错了什么,我会非常感激。

瑞恩鲍尔

4

1 回答 1

1

你不应该需要第二条规则。如果你真的想让它工作,它应该是 RewriteRule ^(.*)/(.*)$ index.php?page=$1/$2,因为第二个(.*)不是$1.

于 2012-07-31T23:26:27.003 回答