Facebook调试器返回404,但curl工作


Facebook Debugger returns 404 but curl works

我使用facebook调试器来检查我的页面,它显示了我的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

Page是有效的

我检查我的test.html使用http://validator.w3.org/和得到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,它会正常工作

如果遇到类似

这样的情况,应该检查服务器日志。
facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)

很可能是你的。htaccess阻止了Facebook爬虫。

如果机器的主机名与请求主机名相等,则使用默认的vhost。您可以在默认vhost中设置ServerName somethig-different-from-hostname或使用a2dissite default禁用默认vhost以防止此

原来这是DNS的问题。我们将主DNS和辅助DNS从我们自己的主机更改为主机,一天后它就工作了。