创建301重定向,不包括facebook

时间:2015-11-02 20:45:04

标签: facebook .htaccess http redirect https

我有一个网站,我从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]

2 个答案:

答案 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;
    }
}