我目前正在为最近更改了结构的网站在文件中应用各种 301 重定向.htaccess
。一切工作正常,但包含特殊字符的 URL 除外,对于这些 URL,我收到了 404 错误。
例如,以下带有注册商标符号 (®) 的指令会显示 404 页面:
RedirectMatch 301 ^/directory/link-with®-special-character(/)?$ somelink.com
RedirectMatch 301 ^/directory/link-with%c2%ae-special-character(/)?$ somelink.com
我也尝试过使用Redirect
,RewriteRule
并用双引号将 URL 括起来,但似乎没有任何效果。
有谁知道可能发生什么事情或者处理这些类型的指令的正确方法?
任何帮助是极大的赞赏。
答案1
我可以确认,在我的 Apache 安装中,这两次 RedirectMatch 尝试也失败了,即使考虑到大写字母(我的日志将请求视为link-with%C2%AE-special-character
)。
您可以考虑使用 RedirectMatch 的正则表达式功能,将商标符号位置替换为或.*
(似乎适用于我的 apache 环境)..
,例如
RedirectMatch 301 ^/directory/link-with..-special-character(/)?$ http://somelink.com
根据 urlencoding 的指示%C2%AE
,此商标符号被解释为两个字符,因此..
可以作为它的正则表达式,而 则.
不行。