2012-07-31 14 views
0

您好,我有一个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 

一旦我这样做,我能够_1的存取admin目录,但现在,所以它看起来像最后一个规则被忽略的内容不会在二级链接显示。

任何人都可以帮助我看到我在做什么错我会非常感激。

瑞恩·鲍尔

回答

1

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

+0

感谢您的及时回复。你是否说我删除了最后三条规则,并用你列出的新规则替换它,因为通配符应该覆盖二级链接? – 2012-07-31 23:34:32

+0

我在说你应该只需要前四条规则,直至包括'RewriteRule ^(。*)$ index.php?page = $ 1'。但是,如果这不起作用,请保留所有*规则,并用'RewriteRule ^(。*)/(。*)$ index.php?page = $ 1/$ 2'替换最后一条规则。换句话说,在'$ 1'后面加上'/ $ 2'到最后一个规则。 – dririan 2012-07-31 23:37:21

+0

谢谢你,当我试着做你说的话,包括添加/ $ 2服务器不能再显示第一级链接时,第二级链接仍然显示页面,但是数据库中的内容没有显示。这是有点奇怪,因为页面显示所有的CSS唯一不显示的是从服务器拉的内容 – 2012-07-31 23:55:09