如何仅在确切的 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 匹配时重定向?的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 仅在 GET 参数存在时重定向

求助如何在 flask 中访问未定义的 url 时重定向到其他页面

在 Django 中接受垃圾 url 时重定向到登录页面

使用 Microsoft Graph API 时重定向 URL 地址不正确

单击 Select2 选项时重定向 URL

使用 JavaScript 按下浏览器后退按钮时重定向到 URL