2015-02-23 116 views
1

我試圖將RewriteRule應用於主頁。我期望以下規則找到只有主頁...RewriteCond for homepage not working

RewriteCond %{REQUEST_URI} ^/$ 

這是行不通的。任何想法爲什麼?

我在htaccess文件做的唯一的另一件事是一個簡單的測試RewriteRule以上後...

RewriteRule (.*) /test.php [L,QSA] 
+0

你的mod_rewrite指令的其餘部分是什麼樣的? – 2015-02-23 21:39:32

+0

除此之外,我只有一個RewriteRule。我加入了這個問題。 – 2015-02-23 21:44:01

+0

這個htaccess位於哪裏,你如何測試這個規則不起作用? – anubhava 2015-02-23 21:49:00

回答

1

有時候,我真的不知道爲什麼,你會發現mod_dir得到應用於 mod_rewrite之前的URI 。這是應該的,但我注意到有時^/$工作,有時甚至^$工作在重寫規則。發生什麼事是將DirectoryIndex應用於URI,它會變成/index.php或其他任何內容。所以你必須做的是與之相匹配。因此,像:

RewriteCond %{REQUEST_URI} ^/(?:index\.php)$ 
RewriteRule (.*) /test.php [L,QSA] 

或者更簡單地說:

RewriteRule ^(?:index\.php)$ /test.php [L,QSA] 

這樣一來,既//index.php得到匹配。

+0

有趣!這似乎解決了它。任何想法如何確保mod_dir後發生?或者是否有REQUEST_URI以外的其他變量會給我用戶在瀏覽器中看到的內容? – 2015-02-23 23:14:15

+0

@MattFordham不知道是否有辦法(或者如果這是所需的東西)。這可能與訂單模塊加載有關(至少在Apache 2.2中)。 – 2015-02-23 23:27:11