2012-08-13 48 views
0

我想重定向重写/zp-core/admin.phpadmin但以某种方式我无法让它工作。.htaccess重写规则正确处理

我已经添加了此规则,以我的htaccess:

RewriteEngine On 

RewriteBase/

RewriteRule ^/admin$ /zp-core/admin.php [L] 

RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^albums/?(.+/?)?$ $1 [R=301,L] 
... 
# Catch-all - everything else gets handled in PHP for compatibility. 
RewriteRule ^(.*)/?$      index.php?album=$1 [L,QSA] 

第三个规则应该这样做,但不知何故,没有。最后,它倒在了包罗万象的规则

回答

1

当你说“改写一个”,通常情况下,“A”是用户类型和“B”是什么,你要他拿。

如果A ='/admin'和B ='/zp-core/admin.php',那么第一条规则就可以了,如果删除了其他规则,它就会起作用。

问题是 - apache会在每个请求中查看.htaccess,包括子请求,并且您的重定向会执行一个子请求...因此,它不再符合第一条规则,但随后出现了全部规则,又是一个比赛(你会看到$_GET["album"]/zp-core/admin.php对这样的要求打的index.php时。

你需要做的是添加RewriteCond要么检查URI是不是/zp-core/admin.php OR那你不是在sub-request ...

要么:

RewriteCond %{REQUEST_URI} !^/zp-core/admin.php$ 

OR:

RewriteCond %{IS_SUBREQ} !=true 
+0

谢谢,这个固定 – 2012-08-13 15:28:41