混合内容 - SSL http / https问题

时间:2015-05-30 15:12:29

标签: wordpress .htaccess ssl https

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

然后,大约2个星期前,我开始对#34;混合内容"除主要主页外的所有页面上的错误。使用Safari查看网站时似乎不会出现问题,但Chrome,Firefox和Internet Explorer存在问题。我在Chrome中检查了Javascript控制台(作为示例)并看到了多个"混合内容"错误

这是我到目前为止尝试修复这些混合内容错误的方法:

  1. 在WordPress管理部分中将http://更改为https://,用于网站和WordPress网址(设置/常规)

  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]
    

    使用此代码,我得到了#34; ERR_TOO_MANY_REDIRECTS"

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

  5. 以上都没有奏效。

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

    非常感谢。

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

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

4 个答案:

答案 0 :(得分:2)

删除

define('FORCE_SSL_ADMIN', true);

来自wp-config.php,请确保您已在WordPress管理员中将http://更改为https://,然后在.htaccess 上面强制使用前端和后端的SSL WordPress重写块:

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

这只会迫使SSL;您仍然需要找到加载非SSL的站点资源。

因此,请使用Firefox(或Firebug)或ChromeSafariIE中的开发者工具查看特定网站资源的错误。< / p>

•您应将帖子/页面内容中的媒体项目和链接的URL更改为https,以便它们不依赖于.htaccess中的重定向。 Search RegEx是一个很好的插件,可以通过所有帖子,页面,摘录,评论,标题和元搜索和替换(可选择使用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。

答案 1 :(得分:0)

RewriteEngine On
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

Source

答案 2 :(得分:0)

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

答案 3 :(得分:0)

使用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插件,它就像魅力一样。