2017-08-10 41 views
0

我已經得到了這個的public_html /的.htaccess:如何更換使用的RewriteRules和Conds一個RedirectMatch排除目錄

RedirectMatch 301 ^/$ /site/ 

又像一堆線:

RedirectMatch 301 ^/contact.php$ /site/page/contact 

哪有我改變它爲RewriteCond和RewriteRules工作相同,但從這些重寫中排除public_html/test /目錄內的任何內容?

+0

你不能。您需要使用重寫條件和重寫規則的組合,而不是重寫匹配。 – arkascha

+0

謝謝@arkascha。在那種情況下,我修改了問題 – StevenKong

回答

0

我會說這可能是你想要什麼:

RewriteEngine on 
RewriteCond 
RewriteRule ^/?test/ "-" [L] 
RewriteRule ^/?$ /site/ [R=301] 
RewriteRule ^/?contact\.php$ /site/page/contact [R=301] 

它會通過所有請求/test,在這之後,你可以實現任何你喜歡的規則。


而且一般提示:你應該總是喜歡在http服務器(虛擬)主機配置,而不是使用動態配置文件(.htaccess風格文件)裏這樣的規則。這些文件出了名的錯誤,很難調試,他們真的放慢了服務器。只有當你無法控制主機配置(讀取:真正便宜的主機服務提供商)或者如果你有一個依賴編寫自己的重寫規則的應用程序(這是一個明顯的安全噩夢) )。

+0

這部分是做什麼的:「 - 」[L]? – StevenKong

+0

@StevenKong如上所述:它通過匹配請求並且不會修改它們。 – arkascha

+0

通過'更好的主機配置'你的意思是httpd.conf文件?你能舉個例子說明如何在那裏做到這一點? – StevenKong

相關問題