301重定向:忽略尾随斜杠和index.html

时间:2013-10-24 08:19:19

标签: apache .htaccess mod-rewrite redirect http-status-code-301

我客户的现有网站使用的网址可以是以下任意一种组合:

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

任何URL都可能(或可能不)具有尾部斜杠,并且可能(或可能不)以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.

有人可以协助吗?我是Rewrite规则的初学者。

谢谢!

1 个答案:

答案 0 :(得分:1)

使尾随斜杠可选:

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