如何仅在确切的 url 匹配时重定向?
Posted
技术标签:
【中文标题】如何仅在确切的 url 匹配时重定向?【英文标题】:How to redirect only when exact url matches? 【发布时间】:2012-01-03 06:48:21 【问题描述】:我正在尝试使用 apache .htaccess 进行重定向。我有以下代码
redirectMatch 301 /user http://clients.mydomain.com
效果很好,但我不希望 "/user/login" 被定向到 "http://clients.mydomain.com/login" >.
如何预防?
【问题讨论】:
【参考方案1】:简单地在开头添加^
,在结尾添加$
^
告诉正则表达式匹配 url 的开头
$
告诉正则表达式匹配 url 的结尾
redirectMatch 301 ^/user$ http://clients.mydomain.com
所以现在你的规则将只匹配 /user
而不是 /some/user
或 /user/name
或 /some/user/name
注意:如果您想匹配/user/
和/user
,请使用^/user/?$
?
表示将前一个字符/组匹配零到一次
【讨论】:
检查尾随的 / 是个好主意。 Firefox 会隐藏它,因此即使您认为 url 是 /user 它实际上是作为 /user/ 传递的 但是如果在Redirect
的正则表达式中有空格字符`? You need double quotes to handle those properly. using escapes
\` 会导致系统认为这是一个额外的参数,而不是转义的空格。如果你有双引号,你不能使用^
或$
来指定精确匹配【参考方案2】:
使用正则表达式,您已经在使用重定向匹配。
http://httpd.apache.org/docs/2.0/mod/mod_alias.html#redirectmatch
'$' 匹配 url 的结尾。在您的示例中:
redirectMatch 301 ^/user/(.+)$ http://clients.example.com/
【讨论】:
感谢您的回答@caskey以上是关于如何仅在确切的 url 匹配时重定向?的主要内容,如果未能解决你的问题,请参考以下文章
求助如何在 flask 中访问未定义的 url 时重定向到其他页面