2012-08-13 45 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