[英]My Rails 3 site won't start on Ubuntu/Apache2/Passenger
[英]Facebook debugger won't scrape my site
我正在创建网站http://Meer.li ,当我通过facebook调试器运行它时 - http://developers.facebook.com/tools/debug/og/object?q=meer.li - 它不能找到我的元标记。
当我查看facebook刮擦的来源时,它显示了我的网站的精简版本,它更改了doc-type并且没有元标记 - http://developers.facebook.com/tools/debug/og /echo?q=http%3A%2F%2Fmeer.li%2F 。
我在这做错了什么?
我正在运行rails 3.2,ruby 1.9.3并且整个东西在Heroku上运行,带有一个mongo数据库。
编辑
看来我的应用程序中确实有正确的接受标头...如果我在不同的视图中这样做:
<%= request.headers["Accept"] %>
我明白了:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
如果我们卷曲-H和正确的标题,为什么我们可以刮掉整个网站? 为什么facebook不刮我的网站?
在调试器中尝试您的URL,它表示响应状态代码为206,这意味着“部分内容”。
我试图卷曲网址,实际上我得到的响应是偏的,它不包括html,head和body标签(或它们的结束标签),看起来像html包含的jsonp响应
$("#designs_content").append
我不确定为什么会发生这种情况,也许你的服务器根据这个检查请求和响应的用户代理字符串?
我不确定这是否与Heroku有任何关系,我从未与他们合作过。 另外,我对rails一无所知,所以我无能为力。
Wget与此无关,它是您的Web服务器根据http请求的标头返回的响应。 当您使用浏览器发出请求时,它会向请求添加一些标头,以帮助服务器找出一些内容。 如果您在chrome(safari等)中打开firebug或开发人员工具,在网络选项卡(他们都有)或使用网络嗅探器,您可以查看发送的标头。
为了让您的生活更轻松,我检查了导致此问题的标题是什么...试试这个:
curl "http://meer.li/"
你会看到响应是jsonp,而不是整个html页面。 现在试试这个:
curl -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" "http://meer.li/"
并且您将获得页面的完整html版本。
由于Facebook在删除页面时没有发送“接受”标题,因此当您使用浏览器查看源时,响应不是您所看到的。
我不知道你怎么解决这个问题,因为它肯定是你的具体设置,但现在至少你知道问题是什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.