【问题标题】:SSL breaks Facebook Likes buttonSSL 打破了 Facebook 的点赞按钮
【发布时间】:2018-11-25 17:16:59
【问题描述】:

我的博客https://sonicscoop.com 的旧帖子可以追溯到 2012 年,有数百个 Facebook“赞”,例如这个https://sonicscoop.com/2012/08/29/the-big-list-of-free-pro-tools-plugins-2/,但是当我们切换到https: 时,它们都失去了正确的计数。看这里:

https://developers.facebook.com/tools/debug/sharing/?q=https%3A%2F%2Fsonicscoop.com%2F2012%2F08%2F29%2Fthe-big-list-of-free-pro-tools-plugins-2%2F

由于某种原因,Facebook 的调试器将规范和 og:url 检测为 https://,即使页面呈现的 HTML 将它们显示为 http://

如果我可以让 Facebook 为较旧的帖子选择 http 规范,我希望喜欢的人会恢复到正确的数量。这是我的.htaccess 文件:

# --enable htaccess rewrites
RewriteEngine on
# --force https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
# --remove www for site
RewriteCond %{HTTP_HOST} ^www\.sonicscoop\.com [NC]
RewriteRule ^(.*)$ https://sonicscoop.com/$1 [L,R=301]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
AddHandler application/x-httpd-php54s .php

【问题讨论】:

  • 您是否有 htaccess 或其他重定向来强制执行 HTTPS?
  • @JustinR。我更新了问题以包括我的 htaccess
  • 我很确定这是因为按钮代码将您的 URL 指定为 https...&lt;iframe src="https://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fsonicscoop.com 请注意 href 查询字符串参数中的 https
  • 您需要在您的 HTTP 到 HTTPS 重定向中为 Facebook 抓取工具实施豁免 - 否则,当它按照指示请求旧的 HTTP URL 时,您会告诉它“不,这已移至 @987654334 @” 之后,从而使您首先将其指向 HTTP 版本无效。 developers.facebook.com/docs/plugins/faqs#faq_1149655968420144

标签: php wordpress ssl facebook-graph-api facebook-like


【解决方案1】:

当 facebook 抓取您的页面时,它会被重定向到您页面的 https 版本。即使您的 og:url 使用 http 版本,我认为 facebook 仍将使用您页面的规范或最终 url。

尝试将 .htaccess 上的重写条件更改为:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_USER_AGENT} !facebookexternalhit/[0-9]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
# --remove www for site
RewriteCond %{HTTP_HOST} ^www\.sonicscoop\.com [NC]
RewriteRule ^(.*)$ https://sonicscoop.com/$1 [L,R=301]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
AddHandler application/x-httpd-php54s .php

【讨论】:

    【解决方案2】:

    试试下面的解决方案

    1) WordPress 仪表板

    2) 移动站点文件后(如有必要),以管理员身份登录您的 WordPress 仪表板。 接下来,单击菜单中的设置,然后单击常规。

    3) 点击常规开始。

    4) 我们将更改的两个字段是 WordPress 地址 (URL) 和站点地址 (URL) 为两个 url 设置 https

    5) 向下滚动页面并单击“保存更改”按钮。

    6) 之后设置 > 固定链接

    7) 如果需要,向下滚动并单击“保存更改”。

    在完成上述所有步骤后,检查 og:url,然后检查 FB like 是否适合您。

    【讨论】:

      【解决方案3】:

      如果是wordpress网站,可以使用Really simple SSL插件。

      1. 安装插件并激活。
      2. 转到可以看到 SSL 的设置。点击它。
      3. 启用 ssl。

        这个插件会处理所有的 ssl 问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-01
        • 1970-01-01
        相关资源
        最近更新 更多