.htaccess - 不起作用的子目录

时间:2012-03-06 12:04:43

标签: php .htaccess rewrite subdirectory

我使用这些规则:

RewriteEngine on

RewriteRule ^robots.txt$ - [L]
RewriteRule ^favicon.ico$ - [L]

RewriteRule ^([^(/\.)]+)/([^(/\.)]+)/([^(/\.)]+)/([^(/\.)]+)/?$ index.php?id=$1&id2=$2&id3=$3&id4=$4 [QSA,L] 
RewriteRule ^([^(/\.)]+)/([^(/\.)]+)/([^(/\.)]+)/?$ index.php?id=$1&id2=$2&id3=$3 [QSA,L] 
RewriteRule ^([^(/\.)]+)/([^(/\.)]+)/?$ index.php?id=$1&id2=$2 [QSA,L]
RewriteRule ^([^(/\.)]+)/?$ index.php?id=$1 [QSA,L]

在我的网络演示文稿中效果很好,但是当我想进入管理部分并输入 / admin 时,我被重定向到 admin /?id = admin (错误页面) - 对于显示登录表单,我必须输入 /admin/index.php 而不是简单的 admin

你能帮助我,如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:1)

您应该有一条通过index.php推送所有内容的规则,而不是使用$_SERVER变量来管理这些页面。

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

这只是我的建议,但是在回答原始问题时,请将此作为您的第一条规则:

RewriteRule ^/admin$ index.php?id=admin [QSA,L]

答案 1 :(得分:1)

所以,我通过这种方式解决了这个问题:

RewriteRule ^(admin)/(.*)$ $1/$2 [L]