如何调试仅在(谷歌)机器人请求页面时发生的问题?

时间:2012-04-11 14:35:13

标签: php http zend-framework httprequest

我的应用程序在从googlebot调用时抛出Zend_Locale_Exception,其中ZF发送以下错误消息:

  

自动检测区域设置失败了!

问题可能是因为未设置默认语言环境,但我该如何调试呢?

由于google bot不是实时的,我需要真正伪造机器人正在制作的HTTP请求,但我怎样才能知道这个请求是如何进行的?

尝试使用curl发送 Accept-Language 标头不会重现错误:

   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, 'http://www.mysite.com.br/');
   curl_setopt($ch, CURLOPT_HEADER, true);
   curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Language'));
   echo $data = curl_exec($ch);
   curl_close($ch);

修改

进一步澄清:

  • 我知道问题可能是缺少默认语言环境,但我需要调试此
  • 更改浏览器的用户代理不起作用,它只更改UA字符串,仍然从我的浏览器发送区域设置

4 个答案:

答案 0 :(得分:3)

我的建议是:

  • 始终设置默认区域设置,因此如果自动检测失败,默认情况下将默认使用区域设置。

为此,您可以添加 application.ini

resources.locale.default = "en_US"

另外,请确保在引导程序中不使用检测到的语言环境,如果必须这样做,请始终使用$this->bootstrap('locale');确保语言环境资源已“boostrapped”在使用Zend_Locale

的方法/插件中

您可以使用终端和浏览器(如Lynx)模拟相同的行为,然后您可能需要取消设置某些环境变量(例如 LANG LANGUAGE )。

答案 1 :(得分:3)

Google网站站长工具中有一个“Googlebot抓取方式”功能。您可以使用它来触发僵尸网站访问您的网站。您甚至可以临时向您的网站添加phpinfo()页面并使用该功能点击该页面,该页面会列出它向您显示的响应中的所有标题。

答案 2 :(得分:1)

wget --user-agent“googlebot(at)googlebot.com用户代理:Mozilla / 5.0(兼容; Googlebot / 2.1; + http://www.google.com/bot.html)”“http: //www.mysite.com.br /“

答案 3 :(得分:1)

为什么你会看到异常可能有很多原因,所以你不能只是“测试”这个。当您需要针对googlebot请求进行测试时,您必须存储该请求,以便稍后可以针对您的网络服务器重播该请求。

但是,正如所写的,触发的原因有很多,您可以在Locale.php中找到自动检测。