给WordPress添加SSL可能会引起意想不到的问题。如果你正在给一个已经在运行的WordPress站点添加SSL并且遇到了问题,那么你走运了,本文我们将介绍如何修复WordPress中常见的SSL/HTTPs问题。
什么是SSL/HTTPS?为什么你应该立即开始使用它们?
SSL / HTTPS是一种保护用户浏览器和WordPress托管服务器之间的连接的加密方式,通过加密使得黑客更难以窃听连接。
每个启用了SSL/HTTPS的网站都会颁发一个唯一的SSL证书用来验证身份。如果服务器假装使用HTTPS,但是其证书并不匹配,那么今天的大多数浏览器都会在用户连接到该网站时发出警告。
去年,Google宣布计划称要通过鼓励站长去使用SSL/HTTPS来提高整体的网络安全。作为计划的一部分,Google的Chrome浏览器将所有没有使用SSL证书的网站都标记为了“不安全”。在浏览器地址栏里的“不安全”标签会给你的客户留下不好的印象。
除此以外,如果你想开一个网店或者想使用Paypal, Stripe, Authorize.net等这些支付服务,你的网站也必须启用SSL/HTTPS。
综合考虑优缺点,建议所有的网站都需要切换到SSL/HTTPS。
下面我们来一起看看WordPress中有哪些常见的SSL/HTTPS问题,以及如何修复它们。
1. 修复 NET::ERR_CERT_INVALID 错误
这个错误信息会出现在Google Chrome中,其他浏览器显示这个错误时可能会有一些语言上的不同,但是基本上是在警告用户它们与你的网站之间的连接时不安全的。
此错误消息表示用户的浏览器不接受网站提供的证书,这可能是由于以下几点原因引起的:
- SSL证书是颁发给其他域名或者子域名的。
- 证书已经过期。
- 你的浏览器无法识别证书颁发机构。
如果你是购买了证书,并且让WordPress主机服务商帮你安装的,那么你可以联系他们帮你修复。
如果你是手动安装的证书,那么尝试重新安装证书或者联系SSL证书发行商寻求支持。
2. 修复WordPress添加SSL/HTTPS后出现的混合内容错误
混合内容错误是由于文件源(例如图片、脚本或者样式文件)仍然在使用HTTP协议加载引起的。如果是这种情况,那么在浏览器地址栏就不会看到一把锁的图标,而是一个感叹号。
修复WordPress中的SSL/HTTPS混合内容错误有两种方法,你可以挑其中一种。
1. 使用插件来修复混合内容错误
这种方法比较简单,推荐小白使用。
只需要安装并启用Really Simple SSL插件,你可以浏览这篇关于如何安装WordPress插件的教程。
启用插件后,前往“设置” – “SSL”页面查看插件的设置。Really Simple SSL无需任何配置,启用后就会自动处理SSL/HTTPS设置并修复混合内容错误。
注意:插件尝试使用输出缓冲技术来修复混合内容错误, 这可能会对你的网站产生负面影响。 但是,如果你使用了缓存插件,那么就只会影响第一页的加载。
2. 手动修复WordPress的混合内容错误
此方法需要手动排除故障,但是更有效,性能更好。
首先,你需要确认你在WordPress的设置中使用了HTTPS。前往“设置” – “常规”页面,确保WordPress地址和站点地址都是HTTPS的地址。
如果你看到URL地址还是以HTTP开头的,那就需要改成HTTPS。改完后记得点击保存修改。
下一步,你需要找到WordPress数据库中老的HTTP地址,并将他们替换成新的HTTPS地址,你可以安装Better Search Replace插件来实现。启用插件后,访问“工具” – “Better Search Replace”页面,在“Search”框内输入http开头的网址,在“Replace”框内输入https开头的网址,然后插件就会自动更新数据库中的URL地址。
如果你还是看到混合内容错误的话,那么下一步就是去排查主题和插件中的URL了。打开浏览器的控制台工具,定位到引起错误的资源,查看他们是从哪里加载的。
对于主题资源来说,你需要将主题中的HTTP都替换成HTTPS。从所有的主题文件中查找URL对于一个新手小白来说还是比较有难度的。如果你自己无法搞定,你可以联系主题的开发者,请求他们更新主题。
对于插件来说也是一样的方法。我们不推荐你自己去编辑插件中的文件,你应该通知插件的开发者,请求他们更新插件。不过,你也可以在网站上禁用有问题的插件并寻找一个替代品。
3. 修复添加SSL/HTTPS后出现的Too Many Redirects错误
WordPress可以允许你通过在wp-config.php中添加下面的代码对管理页面强行使用SSL/HTTPS.
define('FORCE_SSL_ADMIN', true);
不过,有时候这个设置会引起“Too Many Redirects”错误。要修复这个问题,你需要在wp-config.php中添加以下代码。
define('FORCE_SSL_ADMIN', true); // in some setups HTTP_X_FORWARDED_PROTO might contain // a comma-separated list e.g. http,https // so check for https existence if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on';
4. 修复WordPress中的 HTTP 到 HTTPS 重定向
WordPress默认是不会自动将HTTP重定向到HTTPS的,如果你正在使用像Really Simple SSL这样的插件,那么插件会自动处理重定向,否则就需要你手动建立重定向。
建立从HTTP到HTTPS的重定向,需要将如下的代码添加到.htaccess文件中。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule>
希望这篇文章可以帮助你修复WordPress中常见的SSL/HTTPS的问题。如果你遇到的问题在本文中没有提到解决的方法,请在评论区留言。我们会将解决方法更新到文章里。
你还可以看看这篇WordPress安全防护终极指南。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/wp/246215.html