我的应用程序在从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);
修改
进一步澄清:
答案 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
中找到自动检测。