mod重写不显示二级链接上的内容

时间:2012-07-31 23:25:04

标签: apache mod-rewrite

您好我在我建立的个人网站上有一个用于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

1 个答案:

答案 0 :(得分:1)

您不应该需要第二条规则。如果您确实希望它能够正常运行,那么它应该是 RewriteRule ^(.*)/(.*)$ index.php?page=$1/$2,因为第二个(.*)不属于$1