在这个全民 HTTPS 的时期,似乎网站不开启 HTTPS 就不正常似的。以前不断懒得折腾也就没设置 HTTPS ,每天看着谷歌阅读器地址栏上的“不平安”三个大字也的确不是太舒适,今天刚好休班,晚上闲来无事顺便折腾了下 HTTPS ,折腾的过程中也的确呈现了一些问题,想着记载下来希望遇到同样问题的小同伴能够躲避一下。
特别提示:假如你的网站之前运用了 WPS Hide Login 之类的插件,折腾前务必停用以防后期无法登陆后台!另外,记得备份数据库!记得备份数据库!!记得备份数据库!!!重要的事情说三遍。
好了,下面说一下详细步骤:
申请 HTTPS 证书
在配置 HTTPS 之前,我们需求一个 SSL 证书,这里我是直接经过阿里云申请的赛门铁克的免费证书,当然你也能够运用其他证书,后面上传即可。申请位置“管理控制台/平安(云盾)/SSL证书(应用平安)”
申请的步骤就不细致说了,申请完成后会有一个“已签发”的状态,后面我们就用这个证书配置即可。
配置HTTPS 证书
获取到 HTTPS 证书后,我们需求前往“管理控制台/云计算根底效劳/CDN/域名管理”处新建一个加速域名(可暂时不做 CNAME 解析,等完整配置好后再做解析)。
然后我们需求对这个加速域名做些简单的配置,主要是证书的配置。这里我选择的是阿里云证书,直接选择“已签发”的证书即可,当然假如你有别的证书可经过“自有证书”上传即可。
留意将跳转类型设置为 HTTP->HTTPS,后面我们会详细阐明不设置时可能呈现的问题。
修正 WordPress 地址、站点地址及文件的完好URL地址
假如前面未设置解析,则我们如今照旧能够经过 HTTP 方式登录后台。能够在 WordPress 后台常规选项下将 WordPress 地址 及站点地址修正为 https 方式。当然,假如上面将跳转类型设置为默许的话也能够在设置完解析后停止修正:
或者你也能够登录数据库,找到 wp_options 数据表中的下面这两个字段将其修正为 https 方式。
另外,假如之前我们自定义过后台媒体的上传途径,此时我们需求将上传文件的完好 URL 恳求方式也修正为 HTTPS 。默许文件的完好URL地址是留空的,假如你此处的选项是默许值则能够不做修正。另外关于文件上传途径的自定义能够查看这篇文章>>>开启WordPress后台自定义媒体上传功用 。
修正上述途径的目的是为了我们访问的时分能够采用 HTTPS 的方式停止访问,但是假如在配置证书的时分我们选择了默许的跳转方式(前面配置的时分曾经强迫将跳转类型设置为 HTTP->HTTPS 了,这只是证书方面的设置。)则发现我们既能够经过 HTTP 方式访问网站及后台,也能够经过 HTTPS 方式访问,这显然是不平安的,所以我们需求简单配置一下 wp-config.php 文件。
配置 wp-config.php文件
强迫登录及管理运用 HTTPS 方式
WordPress 默许是运用 HTTP 协议的,所以说为了网站的平安我们要使其强迫运用 HTTPS 协议,将以下代码添加到 wp-config.php 文件中去:
/** HTTPS 强迫开启 */ define('FORCE_SSL_LOGIN', true); define('FORCE_SSL_ADMIN', true);
添加完成后并设置 CNAME 解析后,访问网站,我们发现如下问题:
- 网站静态文件(JS、CSS)由于采用原有的 http 方式恳求的招致阅读器制止了其访问
- 图片文件固然加载了,但是其运用的也是 http 方式
形成这个的缘由是由于 wp-includes/load.php 中启用 SSL 函数搞得鬼,代码如下:
/** * Determines if SSL is used. * * @since 2.6.0 * @since 4.6.0 Moved from functions.php to load.php. * * @return bool True if SSL, otherwise false. */ function is_ssl() { if ( isset( $_SERVER['HTTPS'] ) ) { if ( 'on' == strtolower( $_SERVER['HTTPS'] ) ) { return true; } if ( '1' == $_SERVER['HTTPS'] ) { return true; } } elseif ( isset($_SERVER['SERVER_PORT'] ) && ( '443' == $_SERVER['SERVER_PORT'] ) ) { return true; } return false; }
WordPress 经过 $_SERVER[‘HTTPS’] 判别网站能否启用 HTTPS 的,但是虚拟主机仿佛是由于 CGI 配置的问题返回 $_SERVER[‘HTTPS’] 的值为 null ,所以 WordPress 无法判别网站已启用 SSL ,一切静态资源也就无法加载了。那么,如何处理上述问题呢?我们只需求在 wp-config.php 文件中添加如下代码即可:
//强迫定义 HTTPS 参数 $_SERVER['HTTPS']='on';
添加完上述代码后我们再次访问网站,发现网站又呈现如下问题:
修正静态资源恳求方式
固然静态资源加载了,但是由于链接照旧是 HTTP 方式恳求的,招致阅读器判别网站仍旧不平安,未显现小绿锁。我们经过查看数据库的 wp_posts 数据表发现,原来之前发布的文章一切的图片资源记载的是 http 协议的链接,我们需求将其交换为 https 方式,详细可运用如下两种办法:
办法一:更新数据库
办法一运用的办法是直接经过命令将数据库原有的 http 交换为 https ,运用该办法的独一问题就是博客一切的资源链接都变成了 https ,以后假如我们停用了 SSL 网站的静态资源,那么网站的静态资源就会加载失败,当然我们到时分还能够在经过反向应用命令将链接再次交换为 http 的即可。
update wp_posts set post_content = replace(post_content, 'http://blog.quietguoguo.com','https://blog.quietguoguo.com');
将上面的链接交换成你本人网站地址的链接即可。
办法二:修正 functions.php 文件
办法二运用代码在网站加载的时分讲 http 链接交换为 https 的,将代码添加到主题的 functions.php 文件中即可,详细代码如下:
//WordPress SSL at 2016/12/29 update add_filter('get_header', 'fanly_ssl'); function fanly_ssl(){ if( is_ssl() ){ function fanly_ssl_main ($content){ $siteurl = get_option('siteurl'); $upload_dir = wp_upload_dir(); $content = str_replace( 'http:'.strstr($siteurl, '//'), 'https:'.strstr($siteurl, '//'), $content); $content = str_replace( 'http:'.strstr($upload_dir['baseurl'], '//'), 'https:'.strstr($upload_dir['baseurl'], '//'), $content); return $content; } ob_start("fanly_ssl_main"); } }
感激泪雪博客提供的代码。添加完代码后再次刷新网站,显现结果如下:
至此 HTTPS 配置完成。
感谢您的来访,获取更多精彩文章请收藏本站。
![](https://www.gyzsq.com/wp-content/uploads/2022/07/9259adea4619.gif)
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
![头像](/wp-content/themes/zibll/img/avatar-default.png)
- 最新
- 最热
只看作者