带有尾部斜杠的 RewriteRule

带有尾部斜杠的 RewriteRule

我需要重定向一些带或不带尾部斜杠的链接:

www.domain.con/foo   → www.domain.com/redirect(工作)
www.domain.com/foo/www.domain.com/redirect(不工作)

我尝试过这个规则.htaccess

RewriteRule (.*)/foo/$ http://www.domain.com/redirect$1 [L,R=301]

答案1

要重定向www.domain.com/foo或 ,www.domain.com/foo/www.domain.com/redirect需要使尾部斜杠上的匹配可选并带有问号 ( /?):

RewriteRule ^foo/?$ http://www.domain.com/redirect [L,R=301]

答案2

RewriteRule ^foo/?$ http://www.domain.com/redirect [L,R=301]

这是一个正确的解决方案,但不会将变量传递过来,只是逐页传递。如果您遇到缓存问题,我建议使用https://httpstatus.io/验证重定向,因为它似乎没有缓存任何重定向信息。此外,使用 302 而不是 301 进行测试将使浏览器不会顽固地放弃缓存的页面位置。

相关内容