我有一个网站,我从http更改为https。它有一个301重定向,以确保每个人都转到https版本。
不幸的是,这导致Facebook将其视为不同的网站并将共享计数重置为零。在Facebook的开发者指南中,they give a solution to this:
如果您的新网址为“https://example.com/new-url”,则旧网址为 https://example.com/old-url,你应该把这个snippit包括在内 新-URL:
meta property =“og:url”content =“https://example.com/old-url”/
但是,我在网站上有301重定向这一事实使得这不起作用。 Facebook的抓取工具永远不会到达http网站。这就是Facebook所说的:
如果您希望其他客户在访问该网址时进行重定向,则表示您 必须将301 HTTP响应发送给所有非Facebook抓取工具客户端。
有谁知道该怎么做?我可以编辑我的.htaccess文件。但是我可以在那里完成这项工作呢?
谢谢!
编辑:我当前的.htaccess文件只是:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
答案 0 :(得分:7)
它表示您需要阻止抓取工具/用户代理重定向。所以只需将其添加到规则中即可。
RewriteEngine On
RewriteCond %{HTTPS} !^on
RewriteCond %{HTTP_USER_AGENT} !(Facebot|facebookexternalhit/1.1) [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
因此,如果https 不,并且不,则Facebook抓取工具会重定向到https,否则会保留http。
信息在这里。
https://developers.facebook.com/docs/sharing/webmasters/crawler#updating
答案 1 :(得分:2)
为了补充巴拿马杰克的答案,这里是我的nginx版本
location / {
if ($http_user_agent !~ "(Facebot|facebookexternalhit/1.1)") {
rewrite ^(.*)$ https://$http_host$request_uri redirect;
}
}