2013-06-12 98 views
1

我對mod_rewrite配置有點問題。mod_rewrite:如何將除2個文件以外的所有內容重定向到「/」?

我想將所有內容重定向到根目錄(http://www.mydomain.com/),除了兩個文件。

所以,我想這一點:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !^/ 
RewriteCond %{REQUEST_FILENAME} !/file1.html 
RewriteCond %{REQUEST_FILENAME} !/file2.html 
RewriteRule ^(.*)$ http://www.mydomain.com/ [L,R=301] 

這unfortunetely不重定向任何東西。

如果我遺漏了第一個RewriteCond行,則會出現重定向錯誤。

我在哪裏出錯了?

回答

7

首先,您可能需要使用REQUEST_URI而不是REQUEST_FILENAME。它們在虛擬主機場景中可能相同,但通常不會。你可能有意重寫URI,而不是本地路徑。其次,你的規則;

RewriteCond %{REQUEST_FILENAME} !^/ 

...排除的東西所有請求開始/,即所有的URI,被重寫。你想要做的可能是;

RewriteCond %{REQUEST_URI} !^/$ 

爲被忽略的文件的規則也許應該有一個額外的$末是一個「結尾」匹配,而不是一個「包含」匹配。

留下類似的東西;

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/$ 
RewriteCond %{REQUEST_URI} !/file1.html$ 
RewriteCond %{REQUEST_URI} !/file2.html$ 
RewriteRule ^(.*)$ http://www.mydomain.com/ [L,R=301] 
+0

我自己找到了!這和你的建議完全一樣,約阿希姆 - 但是非常感謝! –

相關問題