您好我在我建立的个人网站上有一个用于seo友好网址的mod_rewrite脚本。这个脚本很棒,直到我注意到我无法收到我的admin文件夹,这是服务器上的真实目录。在我第一次改变之前,.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
一旦我这样做,我就能够获得管理员目录,但现在内容将不会显示在二级链接上,因此看起来最后一条规则被忽略了。
任何人都可以帮我看看我做错了什么我会非常感激。
Ryan Bauer
答案 0 :(得分:1)
您不应该需要第二条规则。如果您确实希望它能够正常运行,那么它应该是
RewriteRule ^(.*)/(.*)$ index.php?page=$1/$2
,因为第二个(.*)
不属于$1
。