创建301重定向,不包括Facebook

Max*_*ott 2 .htaccess https redirect facebook http

我有一个网站,我从http更改为https.它有一个301重定向,以确保每个人都转到https版本.

不幸的是,这导致Facebook将其视为不同的网站并将共享计数重置为零.在Facebook的开发者指南中,他们给出了一个解决方案:

如果您的新网址为"https://example.com/new-url",旧网址为 https://example.com/old-url,则应将此snippit包含在新网址中:

meta property ="og:url"content ="https://example.com/old-url"/

但是,我在网站上有301重定向的事实使这不起作用.Facebook的抓取工具永远不会到达http网站.以下是Facebook对此的评价:

如果您希望其他客户端在访问URL时重定向,则必须将301 HTTP响应发送给所有非Facebook爬网程序客户端.

有谁知道如何做到这一点?我可以编辑我的.htaccess文件.但是,我可以在那里完成这项工作?

谢谢!

编辑:我当前的.htaccess文件很简单:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)

Pan*_*ack 7

它表示您需要阻止爬网程序/用户代理重定向.所以只需将其添加到规则中即可.

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

因此,如果https 没有打开并且它不是 Facebook抓取工具,那么重定向到https,否则它将保持http.

信息在这里.

https://developers.facebook.com/docs/sharing/webmasters/crawler#updating