处理以百分号作为查询字符串中最后一个字符的 googlebot 请求

处理以百分号作为查询字符串中最后一个字符的 googlebot 请求

我在 iis 6 网站上遇到了间歇性应用程序池崩溃的情况。我已确定导致此问题的请求来自 Googlebot,请求如下(取自 httperr 日志)

HTTP/1.1 获取/Folder/PageName.html?iframe=true&宽度=95%&高度=95%

请求的页面发生了变化,但查询字符串是一致的。

我曾尝试向 global.asax.cs 添加代码来删除这些无效的查询字符串,但似乎查询字符串在命中我的代码之前导致了“Connection_Abandoned_By_AppPool”。

显然我需要尽早处理这个问题,但我真的不知道在哪里处理?

答案1

百分号是 URL 中的特殊字符。你需要编码. 改为 "%25"

答案2

继续研究后,我发现我的网络服务器使用的 Parallels Plesk 8.6 软件包含一个名为 urlprotect.dll 的 ISAPI 过滤器,它本质上只是允许对网站上的某些 URL 进行密码保护。

此 ISAPI 过滤器默认应用于(至少在此版本的 Plesk 中)服务器上的所有网站,即使您未定义任何受保护的 URL。

这是无法处理 URL 中未转义的百分号的原因。

我在这个论坛帖子中找到了此信息(http://forum.parallels.com/showthread.php?t=83376) 这也表明该 dll 问题尚未成功解决。

如果您不需要以这种方式保护任何 URL,那么我的经验是,可以通过 IIS 安全地将其从站点中删除,而不会产生任何不良影响。

相关内容