Facebook - 解析输入URL时出错,没有缓存数据,或者没有数据被删除

bra*_*net 10 php facebook facebook-opengraph

经过研究,我发现很多人都面临同样的问题.但到目前为止,我没有解决方案,这发生在我将服务器切换到linode.com之后

让我们举一个例子.www.acemark2u.com是linode服务器下托管的网站之一,当我尝试在https://developers.facebook.com/tools/debug/og/object/中调试时,它无法获取scrape信息正确的,如果我尝试使用其中一个页面www.acemark2u.com/about-us,它只会显示错误"解析输入URL时出错,没有缓存数据,或者没有数据被删除".

奇怪的事情发生了.当我尝试使用ip地址106.187.35.114/~acemark2进行调试时,一切顺利.很好地获取,页面没有错误404.

我怀疑它可能是由"gethostbyaddr"功能引起的(参考:http://www.gearhack.com/Forums/DisplayComments.php? file = Computer/Network/Internet/Preventing_Your_Web_Server_From_Blocking_Facebook_Share )但到目前为止我还没有解决方案.

Kza*_*zar 14

对于遇到相同问题但出于不同原因的人,我发现了一些有趣的事情,关于Facebook如何"擦除"页面,在进行一些试验时检查服务器的日志.

首先:如果你从未试图与FB共享一个页面,FB从未尝试过它,如果只将url放在Debug工具中,它就不会尝试这样做.这是第一个原因,因为你得到了错误:它只是声明FB没有关于页面的信息,你必须"强制"它来刮擦页面.

第一次尝试共享页面时,FB会擦除它(向服务器询问页面的前40k并分析opengraph标记).可能发生的是您没有看到图像:Facebook Share Dialog在首次加载时不显示缩略图

原因是幕后的FB仍然在抓你的页面并缓存图像.事实上,下一次你也有了这个形象.怎么解决?预缓存:https://developers.facebook.com/docs/sharing/best-practices#precaching

或者只是添加

<meta property="og:image:width" content="450"/>
<meta property="og:image:height" content="298"/>
Run Code Online (Sandbox Code Playgroud)

  • 我知道距您发布此答案已经一分钟了,但是您能给我参考吗,您发现FB仅在抓取页面的前40k吗? (2认同)

bra*_*net 4

我终于找到了解决方案。

在我的默认 DNS A/AAAA 记录中,我没有删除这几个 ip

2400:8900::f03c:91ff:fe73:a95d  Default
mail    2400:8900::f03c:91ff:fe73:a95d  Default
www 2400:8900::f03c:91ff:fe73:a95d  Default
Run Code Online (Sandbox Code Playgroud)

这就是为什么有些用户通过正确的网址访问时会指向上述IP。