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

标签 php http zend-framework httprequest

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

Autodetection of Locale has been failed!

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

由于 google bot 不是实时的,我需要实际伪造 bot 发出的 HTTP 请求,但我怎样才能知道这个请求是如何发出的?

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

   $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 字符串,区域设置仍然从我的浏览器发送

最佳答案

Google 网站站长工具中有一个“Fetch as Googlebot”功能。您也许可以使用它来触发机器人访问您的网站。您甚至可以临时将一个 phpinfo() 页面添加到您的站点并使用该功能点击它,这将列出它显示给您的响应中的所有 header 。

关于php - 如何调试仅在(谷歌)机器人请求页面时发生的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10108109/

相关文章:

java - Java 中的 JSON 数组

ios - swift - 失败 : responseValidationFailed in Alamofire (StatusCode 401)

php - Zend Framework - 需要从 View 访问 GET 参数

php - 使用 Zend Framework 创建 cronjob

php - 从多个表中比较并插入?

php - 优化mysql随机查询

php - Magento 2 不访问数据库中的产品

php - 我正在访问日期为 : how to assign a value when a particular date is not present? 的记录

c++ - 如何读取一个http请求(一个http代理服务器)

mysql - Zend Framework 按空值升序排序