【问题标题】:Mixed content - SSL http/https issue混合内容 - SSL http/https 问题
【发布时间】:2015-08-13 09:26:14
【问题描述】:

大约 2 个月前,我在我的网站 catherinerushforth.com 上安装了 SSL 证书。我将 WordPress 管理区域中的站点和 WordPress URL 更改为包含 https:// 而不是 http://。一切都很好。

然后,大约 2 周前,我开始在除主主页之外的所有页面上遇到“混合内容”错误的问题。使用 Safari 查看网站时似乎没有问题,但使用 Chrome、Firefox 和 Internet Explorer 时出现问题。我检查了 Chrome 中的 Javascript 控制台(作为示例)并看到了多个“混合内容”错误

这是我迄今为止尝试修复这些混合内容错误所做的工作:

  1. 在网站和 WordPress URL(设置/常规)的 WordPress 管理部分将 http:// 更改为 https://

  2. 我添加了“define('FORCE_SSL_ADMIN', true);”到 wp-config.php 文件的顶部。

  3. 我已将以下代码添加到 .htaccess 文件中:

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^catherinerushforth.com [NC]
    RewriteRule ^(.*)$ https://catherinerushforth.com/$1 [L,R=301]
    

    使用此代码,我得到“ERR_TOO_MANY_REDIRECTS”

  4. 我也试过插件,WordPress HTTPS (SSL)。

以上方法均无效。

有谁知道我做错了什么和/或对如何解决此问题有任何建议?

非常感谢。

WordPress 版本:4.2.2 主题:X-theme v.4(虽然问题与该主题的先前版本相同) 网站:catherinerushforth.com

更新 如果我只是为我的网站重新制作每个页面(由于 X-Theme 现在使用他们的 CornerStone 页面构建器,我可能不得不在某个时候这样做)这是否会确保所有链接都是 https:// 而不是 http://?

【问题讨论】:

标签: wordpress .htaccess ssl https


【解决方案1】:

删除

define('FORCE_SSL_ADMIN', true);

从 wp-config.php,确保您已在 WordPress Admin 中将 http:// 更改为 https://,然后在 .htaccess above WordPress 重写中强制前端和后端使用 SSL块:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://catherinerushforth.com/$1 [R=301,L]

这只会强制 SSL;您仍然需要找到正在加载非 SSL 的站点资源。

所以使用Firefox(或Firebug)或ChromeSafariIE中的开发者工具来查看特定站点资源的错误。

还有:

• 您应该将帖子/页面内容中的媒体项目和链接的 URL 更改为 https,这样它们就不会依赖于 .htaccess 中的重定向。 Search RegEx 是一个很好的插件,能够在所有帖子、页面、摘录、cmets、标题和元中搜索和替换(可选地使用 grep)。并且,interconnectit.com WordPress Serialized PHP Search Replace Tool 可用于在整个数据库中查找/替换,即元数据、GUID 和小部件内容等。

• 您可能需要更改 CSS 文件中图像的相对路径,即 background-image: url(http://example.com/themes/wp-content/theme/images/image.jpg)background-image: url(images/image.jpg)

• 您可能需要从 php 主题文件的绝对路径中删除http,即将'http://example.com/image.jpg' 更改为'//example.com/image.jpg';这将允许您的资源默认为 https。

【讨论】:

  • 谢谢马克。只是为了确保我准确地按照您的步骤进行操作,我是在 WordPress 默认代码“# BEGIN WordPress ”代码中还是在它自己的代码之间添加上面提供的“RewriteEngine On...”代码".... 在 .htaccess?
  • 将其添加到#BEGIN WordPress 块上方;它必须在 WordPress 规则之前执行。您不需要 ...,但根据您的主机,您可能需要添加它。
  • 感谢 Mark 清楚地解释了该代码的放置位置。不幸的是,现在网站上的每个链接都指向主页 catherinerushforth.com。我尝试过使用和不使用 .... 位。
  • 然后删除它。确保您已在 WordPress Admin 中将 http:// 更改为 https://。使用开发工具查找安全元素。
【解决方案2】:
RewriteEngine On
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

Source

【讨论】:

  • 感谢 Lars 的快速回复和建议。我收到此代码的重定向错误。也许尽管这与我所做的另一件事有关,如我最初的问题中所述。我是否必须将“服务器名称”和/或“request_uri”替换为特定于站点的文本?
  • 不,这些是variables
  • 这不会阻止通过普通 HTTP 建立初始连接(在重定向发生之前),因此混合内容错误将仍然存在。
【解决方案3】:

所以我在以http://https://website.com/image.jpg 返回的图像网址上遇到了这个问题。我所做的是使用 Velvet URL 插件将所有内容的 url 从http://https://websiteurl 重写为https://websiteurl。这为我解决了这个问题。干杯

【讨论】:

    【解决方案4】:

    使用 ubuntu 16.04、letsencrypt、nginx、apache2、wordpress。对我来说

    1. adding redirect in `/etc/apache2/sites-enabled/000-default.conf` didn't work (too many redirects)
    
    2. adding RewriteRule in .htaccess didn't work (too many redirects)
    

    最后我从 wordpress 安装了真正简单的 ssl 插件,它就像魅力一样工作。

    【讨论】:

      猜你喜欢
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      • 2020-08-18
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多