2013-10-24 75 views
0

我的客戶的現有站點使用的URL,可能是在這些組合中的任何一個:任何URL可能(也可能不會)有一個尾隨斜線301重定向:忽略尾隨斜線和index.html

site.com/canada/mountain_rail 
site.com/canada/mountain_rail/ 
site.com/canada/mountain_rail/index.html 
site.com/canada/mountain_rail/index.html/ 

,並可能(或可能不)以index.html結束。這有點噩夢。

我想寫一個301重定向,可以採取任何一個字符串,並重定向到他們的新網站上的不同頁面。我到目前爲止是這樣的:

RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^canada/mountain_rail$ /canada/mountain-rail-vacations? [R=301,NE,NC,L] 

這正常工作與像site.com/canada/mountain_rail網址,但site.com/canada/mountain_rail/site.com/canada/mountain_rail/index.html不工作,只返回一個404

任何人都可以幫助嗎?我在重寫規則上是一個初學者。

謝謝!

回答

1

製作斜線可選:

RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^canada/mountain_rail(?:/index\.html)?/?$ /canada/mountain-rail-vacations? [R=301,NE,NC,L] 
+0

感謝@anubhava。如果有人想要訪問'canada/mountain_rail',會發生什麼情況,但是.htaccess中的'canada /'的重寫規則在它之上呢?它是否會重定向到第一條規則,因爲這是首先被「滿足」?希望這是有道理的...... – Jack

+0

重寫規則應匹配'^加拿大/?$'模式,然後順序無關緊要。 – anubhava

+0

謝謝。您的回答對於我的問題中的前3個網址是完美的,但第四個網址('site.com/canada/mountain_rail/index.html /' - index.html和尾部的斜線)無法正常工作。有沒有解決方法? – Jack