重写规则与 .htaccess 中的尾部斜杠无关

重写规则与 .htaccess 中的尾部斜杠无关

我想重定向 URL,而不考虑尾部斜杠。原因是我的网站默认强制使用尾部斜杠;如果内部链接缺少尾部斜杠,那么我就会有一个重定向链 (/test -> /test/ -> /go-here/)。

我试过了:

  • 这不起作用:RewriteRule ^test(/$|$) /go-here/ [R=301,L]
  • 这可行:(Redirect 301 /test /go-here/但我不想这样做)

本质上,我想要一种好的方法来重定向如下所示实例的 URL,而不必在我的 .htacess 文件中写大量的行。

  • /test -> /go-here/
  • /test/ -> /go-here/

答案1

使用“once of nonce”运算符,它是 {0,1} 的缩写

RewriteRule ^test/?$ /go-here/ [R=301,L]

答案2

如上所述,您可以使用 ? 运算符来匹配带斜线和不带斜线的,这是最精确的方法。

不过,值得一提的另一种方法是只匹配字符串的开头。在正则表达式中,^ 匹配字符串的开头,$ 匹配字符串的结尾。通常人们会同时包含这两个,但您不必同时包含它们,甚至不必包含其中任何一个(如果您想匹配中间的字符串,而该字符串不在开头或结尾附近)。

因此,这也将实现您所追求的目标:

重写规则 ^test /go-here/ [L,R=301]

以“test”开头的任何内容都会被匹配,无论其后是什么斜线或其他内容。

但要小心,因为这也会匹配 /testing 或 /tester。

相关内容