或许类似于this question,但因为我的问题的间歇性而发布一个新的。我曾尝试过该帖子中的许多建议。
在研究这篇文章时,我早在2012年就已经看到了人们反对它的帖子,虽然有些东西对某些人有用,但我找不到任何明确的解决方案。我似乎无法解决我的问题所以如果我们确实解决了这个问题,我会尽可能地详细说明这个问题,希望这可以作为某种资源。
在使用OG数据的服务上共享URL时,图像不会被提取,但这有时只会发生。最值得注意的是,这种情况发生在Facebook上,但当它发生在特定图像上时,其他OG服务(如WhatsApp)也会遇到同样的问题,这让我相信问题出在图像本身或OG元数据而不是Facebook&#39执行它。它不是等待刮刀做其事情的情况,这已经持续了好几个星期而且经常重新开始。
当发生这种情况时,我从Facebook调试器中获得以下信息:
使用原始标签,构建的数据和示例,没有什么异常,报告中没有发现其他错误。基本上,调试器说一切都是A-OK,并且还显示了我希望它显示的图像。但是,当实际共享URL时,获取的信息不包括图像。
我的研究表明,Facebook对于做一些事情所需的信息非常挑剔,我应该提供尽可能多的属性。所以,目前我的meta看起来像这样(取决于页面):
<title>Examplefest 2018 - Lineup</title>
<meta name="description" content="An outstanding lineup" />
<meta property="og:title" content="Examplefest 2018 - Lineup" />
<meta property="og:description" content="An outstanding lineup" />
<meta property="og:url" content="https://example.com/lineup/" />
<meta property="og:type" content="article" />
<meta property="fb:app_id" content="15***********94" />
<meta property="og:image" content="http://example.com/_images/social-shares/lineup-social-share.jpg" />
<meta property="og:image:url" content="http://example.com/_images/social-shares/lineup-social-share.jpg" />
<meta property="og:image:type" content="image/jpeg" />
<meta property="og:image:width" content="800" />
<meta property="og:image:height" content="420" />
<meta property="og:image:alt" content="Examplefest 2018 - Lineup" />
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:title" content="Examplefest 2018 - Lineup" />
<meta property="twitter:site" content="@examplefest" />
<meta property="twitter:creator" content="@examplefest" />
<meta property="twitter:description" content="An outstanding lineup" />
<meta property="twitter:image" content="http://example.com/_images/social-shares/lineup-social-share.jpg" />
<meta property="twitter:image:alt" content="Examplefest 2018 - Lineup" />
到目前为止,基于我的研究,我已尝试过(以各种组合方式):
og:url
- 包含和不包含斜杠og:image:url
- 使用和不使用此og:image:secure_url
- 当图像显示时,是否使用此功能
通过HTTPS提供<html prefix="og: http://ogp.me/ns#">
- 使用和不使用此要强制通过HTTP而不是HTTPS传递这些图像,我已经使用了.htaccess。我在日志中没有收到任何错误,指定文件夹中没有子文件夹,Facebook调试器确认它检索的图像是通过HTTP。我的.htaccess看起来像这样(最后有一堆永久和临时的重定向):
Options +FollowSymLinks
RewriteEngine On
#Rewrite the WWW out of urls
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [L,NE,R=301]
#Rewrite everything to https except the contents of specific folders
RewriteCond %{HTTPS} !on
RewriteCond %{THE_REQUEST} !\s/+_images/social-shares[/?\s] [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301]
#Force contents of specific folders to be HTTP and not HTTPS
RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} \s/+_images/social-shares[/?\s] [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301]
#Allow cross site resources
Header add Access-Control-Allow-Origin "*"
我觉得我已经尝试了我能找到的每一个选项,但似乎没有任何效果。令人费解的是,它只是间歇性的;当图像工作时,它适用于所有OG服务,当它失败时,它对所有OG服务都失败。将图像更改为其他图像有时会起作用,有时也不会。实际上,这与第一张图像显示的几率大致相同。这是否意味着图像本身的某些属性对此过程很重要?当我有一个我要分享的特定图像时,将图像更改为其他内容并不是一个真正的选项。
有没有人对下一步尝试有什么想法?或者甚至更好,你能看到我的代码有任何明显的问题吗?如果你想了解一下真实的东西,我很高兴给你一个URL。