2012-05-30 45 views
1

目前我有一個處理請求(使用友好的URL)的控制器。重定向到該控制器我用下面的.htaccess:.htaccess重定向如果root,index.php,不是文件或不是目錄

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ __controller.php?p=$1 [L,QSA] 

然後我有一個的index.php重定向到/ home是主頁(我強迫這使主頁也使用控制器):

<?php 
header('Location: home', true, 301); 
exit(); 
?> 

不過,我也希望它發送到該控制器,如果該文件是index.php文件,或者如果它的根域(因爲我不再需要的主頁是www.test.com/家,而只是www.test.com),所以以下每一項都將通過控制器:

www.test.com/friendly-url/123/post-topic(當前工作)

但也:

www.test.com/index.php和 www.test.com

顯然最後2個條件目前不能正常工作,因爲index.php文件存在,所以.htaccess不會通過控制器發送它。

回答

3
RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^index.php$ /home [L,R=301,QSA] 
RewriteRule ^$ __controller.php?p=home [L,QSA] 
RewriteRule ^(.*)$ __controller.php?p=$1 [L,QSA] 

你是在找這個嗎?

那麼你不需要PHP重定向

+0

這是絕對* *我是什麼之後,非常感謝你! – ChimeraTheory

0

這個替換您的.htaccess代碼:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule (?!^index\.php/?$)^(.+)$ __controller.php?p=$1 [L,QSA,NC] 
相關問題