Facebook 共享调试器在使用 CloudFlare 页面规则重定向到 HTTPS 时出错



>我有一个网站最近切换到HTTPS。 为了将HTTP重定向到HTTPS,我在CloudFlare中创建了一个页面规则:

http://www.domain.com/*
Always Use HTTPS

这有效,输入站点的HTTP版本将重定向到HTTPS版本。

但是,此更改使该网站失去了原始HTTP版本的Facebook"喜欢"。

为了解决这个问题,我按照Facebook的"移动URL"说明,将og:url元标记添加到带有原始HTTP域的HTTPS网站,以捕获原始的喜欢:

<meta property="og:url" content="http://www.domain.com"/>

但是,在Facebook共享调试器上重新抓取网站时,Facebook给了我一个错误,说:

Could Not Follow Redirect Path
Using data from https://www.domain.com/ because there was an error following the redirect path.
Could Not Follow Redirect
URL requested a HTTP redirect, but it could not be followed.

我该如何解决这个问题?

Facebook的文档指出

。旧 URL 仍呈现带有 Open Graph 标记的文档,并且 返回HTTP 200响应,至少在由Facebook加载时 爬虫。如果您希望其他客户端在访问 URL,您必须将 301 HTTP 响应发送给所有非 Facebook 抓取工具 客户。旧网址应包含自己的 og:url 标记,该标记指向 本身。

也就是说,http://www.domain.com/仍然需要被Facebook爬虫访问,因此在CloudFlare级别重定向到HTTPS可能是一个问题。

与其重定向到 CloudFlare 上的 HTTPS,不如尝试在站点的根目录下创建一个 .htaccess 文件:

RewriteEngine On
RewriteCond %{HTTPS} !^on
RewriteCond %{HTTP_USER_AGENT} !(Facebot|facebookexternalhit/1.1) [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

如果它有效,Facebook Crawlers将看到您网站的HTTP版本,其他所有人都将被重定向到HTTPS

祝你好运!

最新更新