我正在尝试重定向一系列静态网址,无论是否存在尾部斜杠,我希望它能正常工作:
/foo/bar ---> /tacos
/foo/bar/ --> /tacos
我尝试过以下各种各样的变体,但我总是只得到一个匹配的斜杠:
RewriteRule ^foo/bar?/$ http://url.com/tacos
RewriteRule ^foo/bar(?/)$ http://url.com/tacos
RewriteRule ^foo/bar*/$ http://url.com/tacos
RewriteRule ^foo/bar(*/)$ http://url.com/tacos
我觉得我错过了一些明显的东西。帮助
答案 0 :(得分:34)
答案 1 :(得分:13)
如果你想匹配foo / bar,无论它是否跟着路径的另一部分,你可以说:
RewriteRule ^foo/bar(/.*|$) http://url.com/tacos
这将符合以下任何一项:
foo/bar
foo/bar/
foo/bar/baz
表示:匹配a)斜杠后跟0或更多字符,或b)字符串结尾。
另一方面,这些可能是不受欢迎的:
RewriteRule ^foo/bar/? http://url.com/tacos # This also matches foo/barb
RewriteRule ^foo/bar/?$ http://url.com/tacos # This will not match foo/bar/baz
答案 2 :(得分:3)
尝试
RewriteRule ^foo/bar/?$ http://url.com/tacos
答案 3 :(得分:1)
这也有效:
RedirectMatch 301 /foo/bar(/.*|$) http://url.com/tacos