首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用或不使用尾部斜杠的Apache重写规则

使用或不使用尾部斜杠的Apache重写规则
EN

Stack Overflow用户
提问于 2010-10-02 05:55:33
回答 3查看 34K关注 0票数 23

我正在尝试重定向一系列静态URL,并且我希望无论尾随斜杠是否存在,它都能正常工作:

代码语言:javascript
复制
/foo/bar  --->  /tacos
/foo/bar/  -->  /tacos

我尝试了以下方法,以及各种变体,但我总是只使用尾部的斜杠进行匹配:

代码语言:javascript
复制
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

我觉得我漏掉了一些明显的东西。帮助?

EN

回答 3

Stack Overflow用户

发布于 2011-06-05 04:32:49

如果你想匹配foo/bar,不管它后面是否跟有路径的另一部分,你可以这样说:

代码语言:javascript
复制
RewriteRule ^foo/bar(/.*|$) http://url.com/tacos

这将匹配以下任一项:

代码语言:javascript
复制
foo/bar
foo/bar/
foo/bar/baz

它的意思是:匹配a)斜杠后跟0个或更多字符,或者b)字符串的结尾。

另一方面,这些可能是不可取的:

代码语言:javascript
复制
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
票数 14
EN

Stack Overflow用户

发布于 2010-10-02 05:57:51

试一试

代码语言:javascript
复制
RewriteRule ^foo/bar/?$ http://url.com/tacos
票数 3
EN

Stack Overflow用户

发布于 2018-05-22 11:59:45

这也行得通:RedirectMatch 301 /foo/bar(/.*|$) http://url.com/tacos

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3843293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档