2009-12-24 31 views
1

我看到奇怪的重定向行为与具有编码字符的URL。例如,以下两个URL仅在第一编码字符中的“e/E”的情况(即,“%e2”相对于“%E2”)不同。为什么在我编码的URL中大写字符会导致重定向(和GWT重定向错误)?

URL 1http://youlookfab.com/welookfab/topic/your-favourite-80%e2%80%99s-music-bands

  • “200 OK” HTTP状态,页加载罚款

URL 2http://youlookfab.com/welookfab/topic/your-favourite-80%E2%80%99s-music-bands

  • 导致发现了一个“302 “重定向

  • 在浏览器中
  • ,将页面重定向到正确的网址以上(小写字母“E”)

  • 使用web-sniffer.net,内容长度为零

我最初开始寻找因为Google网站管理员工具在一串具有URL编码字符的网页上显示抓取错误(“重定向错误”,具体而言)。虽然我的站点地图文件以小写字母指定这些字符,但GWT以大写形式显示它们。

我在.htaccess中看不到任何理由使小写URL编码字符重定向为大写。该网站基于bbPress,而且我也没有看到bbPress代码中有任何理由会发生这种情况。

mod_rewrite可能会做些奇怪的事情吗?我知道在过去URL编码的字符被错误地处理了一个错误。

你有任何洞察力将不胜感激。

[这是一个集成的bbPress/WPMU安装运行LAMP,托管的MEDIATEMPLE(DV)的服务器上]

回答

1

挖后更深我发现重定向实际上内部的bbPress,其检测在大写六角发生传入的网址并将其视为与“正确”永久链接(具有小写十六进制)的差异。

我有一个更详细一点用一个简单的bbPress插件来解决这一问题写成这样了,一起在http://theblogeasy.com/2009/12/26/bbpress-and-encoded-urls-with-uppercase-hex/

关于谷歌抓取错误......我的理论是,这是当履带引起(将编码的URL转换为大写十六进制)和bbPress(将它们重定向到十六进制小写)进入无限循环。抓取工具可能会在重复获取相同的URL并检测到错误时检测到这种情况。