在 Apache mod 重写规则中使用特殊字符

在 Apache mod 重写规则中使用特殊字符

我们正在尝试清理网站上的一些 404 错误,有些网站链接到 /page.html%C2%A0。我尝试使用 mod rewrite 匹配 URL,并将其重定向到 /page.html

RewriteRule ^page.html%C2%A0 /page.html [R=301,L]

这似乎与 url 不匹配,我也尝试将百分号转义为 \%,但也不匹配。

有人知道如何让它工作吗?

答案1

从你的例子来看,我认为问题很可能是你没有/在请求中包含行距。apache mod_rewrite 文档确实说 \ 应该有效。尝试:

RewriteRule ^/page.html%C2%A0 /page.html [R=301,L]

或者:

RewriteRule ^/page.html\%C2\%A0 /page.html [R=301,L]

如果由于某种原因这些都不起作用,您可以尝试用更大的锤子敲打它(更具包容性的规则集,避免明确使用特殊字符):

RewriteRule ^/?page.html.+ /page.html [R=301,L]

这会将后跟一个或多个任意字符的page.html(带或不带前导/) 重定向为直接/page.html

相关内容