[英]Apache rewrite rule which works with or without a trailing slash
我正在嘗試重定向一系列靜態URL,無論是否存在尾部斜杠,我希望它能夠正常工作:
/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
我覺得我錯過了一些明顯的東西。 救命?
如果你想匹配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
嘗試
RewriteRule ^foo/bar/?$ http://url.com/tacos
這也有效: RedirectMatch 301 /foo/bar(/.*|$) http://url.com/tacos
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.