【问题标题】:Facebook Debugger returns 404 but curl worksFacebook 调试器返回 404 但 curl 有效
【发布时间】:2014-03-10 16:09:18
【问题描述】:

我使用facebook debugger 来检查我的页面,它显示了Response Code 404,但对我来说它有效。

卷曲作品

我使用浏览器和 curl(来自其他服务器)进行了测试。 GET 和 POST 返回HTTP/1.1 200 OK

curl -i http://www.mypage.de/stuff/test.html
curl -i -X POST http://www.mypage.de/stuff/test.html

页面有效

我使用http://validator.w3.org/ 检查我的test.html 并得到This document was successfully checked as XHTML + RDFa!

响应标头

Accept-Ranges:bytes
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:497
Content-Type:text/html
Date:Mon, 10 Mar 2014 16:13:15 GMT
ETag:"28a0b29-353-4f4429866eebc"
Keep-Alive:timeout=5, max=99
Last-Modified:Mon, 10 Mar 2014 15:52:48 GMT
Server:Apache/2.2.22 (Debian)
Vary:Accept-Encoding

为什么 facebook 会收到 404?

更新

如果我查看访问日志,所有请求都到达服务器,但 404 访问来自默认而不是正确的虚拟主机。

如果我在 facebook 中使用 IP 而不是 dns,它可以正常工作。

【问题讨论】:

    标签: php facebook debugging curl http-status-code-404


    【解决方案1】:

    如果遇到类似问题,您应该检查服务器日志

    facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)
    

    您的 .htaccess 可能会阻止 Facebook 爬虫。

    【讨论】:

    • 好点。我查看了日志并更新了问题。首先我认为这只是一个损坏的 DNS 记录,但它看起来更像是损坏的 apache 配置......
    【解决方案2】:

    如果机器的主机名与请求主机名相同,则使用默认虚拟主机。您可以在默认虚拟主机中设置ServerName somethig-different-from-hostname 或使用a2dissite default 禁用默认虚拟主机以防止这种情况发生

    【讨论】:

      【解决方案3】:

      原来这是一个 DNS 问题。我们将主 DNS 和辅助 DNS 从我们自己的 DNS 更改为托管服务器,一天后它就可以工作了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-30
        • 2023-03-21
        • 2012-10-25
        • 2016-07-11
        • 2023-02-15
        • 2014-01-26
        • 1970-01-01
        • 2018-07-05
        相关资源
        最近更新 更多