我看到了具有编码字符的网址的奇怪重定向行为。例如,以下两个URL仅在第一个编码字符中的“e / E”的情况下不同(即“%e2”与“%E2”)。
网址1 :http://youlookfab.com/welookfab/topic/your-favourite-80%e2%80%99s-music-bands
网址2 :http://youlookfab.com/welookfab/topic/your-favourite-80%E2%80%99s-music-bands
导致“302 Found”重定向
在浏览器中,页面重定向到上面的正确网址(小写“e”)
使用web-sniffer.net,内容长度为零
我最初开始研究这个问题是因为Google网站管理员工具在一堆有URL编码字符的网页上显示了抓取错误(“重定向错误”,具体而言)。虽然我的站点地图文件以小写形式指定这些字符,但GWT以大写形式显示它们。
我在.htaccess中看不到任何理由将小写的URL编码字符重定向到大写。该网站基于bbPress,我认为bbPress代码中没有任何理由可以解决这个问题。
mod_rewrite可以做一些奇怪的事吗?我知道过去有一个错误处理URL编码字符的错误。
非常感谢您的任何见解。
[这是运行LAMP的集成bbPress / WPMU安装,托管在MediaTemple(dv)服务器上]
答案 0 :(得分:1)
在深入挖掘之后,我发现重定向实际上发生在bbPress中,它检测到传入URL中的大写十六进制,并将其视为与“正确”永久链接(具有小写十六进制)的差异。
我已经在http://theblogeasy.com/2009/12/26/bbpress-and-encoded-urls-with-uppercase-hex/
更详细地编写了这个,以及一个简单的bbPress插件来解决这个问题。关于Google抓取错误......我的理论是,当抓取工具(将编码的网址转换为大写十六进制)和bbPress(将其重定向为小写十六进制)进入无限循环时,会导致这种情况。当重复获取相同的URL并且抛出错误时,爬虫可能会检测到这种情况。