2012-01-30 268 views
2

我是一個htaccess noob和atm我想解決一個網站的前任網站管理員留下的混亂。htaccess 301重定向

我有實例,如下面的

http://www.domain.com/Home 
http://www.domain.com/Home/ 
http://www.domain.com/Home/Home 
http://www.domain.com/Home/Home/ 
http://www.domain.com/Home/Home/Home 
http://www.domain.com/Home/Home/Home/ 

這都需要301重定向到http://www.domain.com/

以下工作

RewriteCond %{HTTP_HOST} ^.*$ 

RewriteRule ^((?=.*[A-Z])(?=.*[a-z]).{4,15}|(?=.*[A-Z])(?=.*[a-z]).{3,15}\/)$ "http\:\/\/www\.domain\.com\/" [R=301,L] 

然後我也有實例,如以下幾點:

http://www.domain.com/calendar.asp 
http://www.domain.com/Calendar.asp 
http://www.domain.com/calendar.asp?foo=123&bar=456&foobar=123456 
http://www.domain.com/Home/calendar.asp?foo=123&bar=456&foobar=123456 
http://www.domain.com/Home/Home/Home/Calendar.asp 
http://www.domain.com/Home/Home/calendar.asp 
http://www.domain.com/Home/Home/Home/calendar.asp?foo=123&bar=456&foobar=123456 

等等等等

這都需要301重定向到http://www.domain.com/events/

對付他們的多種變體的日曆頁問題下面的兩個工作...

RewriteCond %{HTTP_HOST} ^.*$ 

RewriteRule ^calendar\.asp$ "http\:\/\/www\.domain\.com\/events\/?" [R=301,NC,L] 


RewriteCond %{HTTP_HOST} ^.*$ 

RewriteRule ^((?=.*[A-Z])(?=.*[a-z]).{4,50})\/[cC]alendar\.asp$ "http\:\/\/www\.domain\.com\/events\/?" [R=301,L] 

但是...我懷疑我在這方面的嘗試會被認爲是最佳的,並且不知道應該如何做,而不是我和我有限的知識一起竊取一些東西。

任何幫助表示讚賞

感謝 率性

回答

0

你可以只使用RedirectMatch兩種:

RedirectMatch 301 ^/(Home/?)+$ http://www.domain.com/ 
RedirectMatch 301 /[Cc]alendar\.asp$ http://www.domain.com/events/ 

在「家」的情況下,正則表達式任意數量的/匹配Home /'s和日曆實例中,您只能檢查它是否以Calendar.asp或calendar.asp結尾。

+0

再試..對不起 嗨喬恩林 RedirectMatch 301^/(首頁/?)+ $ http://www.domain.com/ 工程請客 然而 RedirectMatch 301/[ Cc] alendar \ .asp $ http://www.domain.com/events/ 給出了不同的結果.. 例如calendar.asp?event_id = 87重定向到正確的目錄,但它現在保留查詢參數例如/ events /?event_id = 87 calendar.asp?month = 1&day = 17&year = 2020&submit = Show + on + the Calendar 如果這個職位看起來一團糟有404個 感謝 率性 索裏結束了..不知道如何使它看起來正確的..道歉 – 2012-01-30 12:15:28

+0

只是爲了澄清太..我的「再試一次」定向編輯在我自己,..不是你..我第一次嘗試回覆你,當我意外地擊中輸入,我不得不刪除它.. – 2012-01-30 12:23:34

+0

啊,我明白了,你可以添加**?**在結束時重定向的URL,以便查詢字符串不會被追加,所以看起來像這樣:'http://www.domain.com/events/?' – 2012-01-30 19:44:38