不修改数据库,WordPress全站启用https最简单的方法

图片 | Google Chrome https安全连接提示锁图标
图片 | Google Chrome https安全连接提示锁图标

本站已经全站启用https访问,包括所有文章内的图片链接地址,都默认是https地址。没有改动数据库,甚至WordPress后台的WordPress地址(URL)、站点地址(URL)都还是原来的http地址。

因为在安装SSL证书、全站部署https整个过程中,没有修改数据库和后台设置,因此,不但操作简单,风险极低,还可以随时恢复回原来的http访问。这也非常方便将来网站搬家,不需要调整数据库。

所以这个设置SSL、https的方法,应该是最简单、最安全、最方便的。

现在梳理一下整个设置过程。

第一步、申请、安装SSL证书

与几年前相比,申请免费SSL证书、主机安装都更简单方便。免费SSL证书申请步骤有了很大的简化,在主机安装也更方便,比如在cPanel主机页面可以一键安装。

而且很多主机都附带免费SSL证书功能,购买主机后,SSL证书自动被申请、安装好,不需要自己操作。本站就是这种情况,因此原来对SSL有些排斥,现在也很简单就部署好了。

第二步、301重定向http到https

当所有的页面,包括文章内的图片,都可以使用https、http打开,就可以将http重定向到https了。不然搜索引擎会视两种链接为两个网站。

在百度搜索资源平台的https认证中,就有以下要求:

1、在保证原有http站点正常访问的基础上,新建https站点(必须全站点https),并且将http的url 301到https的url上。
2、请保证您的https站点可访问。

谷歌帮助文件内,也有同样的要求:

使用服务器端 301 HTTP 重定向将用户和搜索引擎重定向至 HTTPS 网页或资源。

301 HTTP 重定向至 HTTPS方法 1:

301永久重定向的方法很多,本站采用的是最简单的方法,在主机cPanel管理页面设置的,方法可参考此文《将网站http 301永久重定向到https的方法》

301 HTTP 重定向至 HTTPS方法 2:

Apache环境下:可直接向网站根目录的.htaccess文件添加下面代码:

/** 网站开启 HTTPS 的301重定向 **/
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_USER_AGENT} !MSIE/[1-8]\. [NC]
RewriteCond %{HTTP_HOST} baiyunju.cc
RewriteRule ^.*$ https://baiyunju.cc%{REQUEST_URI} [L,R=301]
/** 注:RewriteCond %{HTTP_USER_AGENT} !MSIE/[1-8]\. [NC]这行代码是排除IE1-8版本浏览器使用HTTPS访问,不需要的话此行可删去。 **/

Nginx环境下:打开网站的配置文件,一般是服务器vhost目录下的网站.conf 文件,在文件最上方添加以下代码:

server {
    listen      80;
    server_name    baiyunju.cc;
    return      301 https://baiyunju.cc$request_uri;
}

域名带www的要加上www。

第三步、全网站图片链接地址替换为https

当完成http 301重定向到https后,所有网页打开都是https了。包括主页、分类、标签,所有在重定向后发布的新文章,打开后在各个浏览器内都会显示是安全的连接。

如果浏览器地址栏提示“信息或不安全”、“此页中包含其他不安全的资源”等不安全链接信息,是因为此页内还有混合资源。比如网站logo、菜单、rss订单、网站地址等等链接是手工填写的http地址。

直接将这些http地址改为https就行了,可参考此文《启用https/SSL证书,“此页中包含其他不安全的混合资源”的解决方法》

但是,旧文章页内的图片,并不会全部自动转换为https,这是因为图片的http地址,被写死在数据库内了,都是绝对地址。

当然,可以直接在数据库内将http替换为https,也可以安装插件进行修改。只是,如果将来不想使用http,或者网站搬家临时使用http,都需要再将https改为http,非常麻烦,且有风险。

因此本站采用的是以下比较简单的方法,直接在当前主题的functions.php文件中添加以下代码:

/** 替换老文章图片链接为 https **/
function my_content_manipulator($content){
    if( is_ssl() ){
        $content = str_replace('https://baiyunju.cc/wp-content/uploads', 'https://baiyunju.cc/wp-content/uploads', $content);
    }
    return $content;
}
add_filter('the_content', 'my_content_manipulator');

完美解决!所有旧文章的图片地址,全部由http转换为https。

此时后台的WordPress地址、站点地址,也没有改为https,依然是原来的http://baiyunju.cc。而且也没有改动数据库,随时可以恢复原来的http访问。

四、其他设置

可以再开启下面设置,强制管理后台、登录页面使用https。

方法是下载网站根目录下的wp-config.php文件,在文件底部添加:

/** 强制管理后台和登录页使用 SSL **/
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

不过本站并没有设置此项,设置301重定向后,后台管理页、登录页,都会自动跳转到https了。在可以正常使用的情况下,尽量少作改动。如果不跳转可以添加此代码。

至此,网站全站部署ssl证书、启用https访问的工作,就全部完成了。

©禁止转载 侵权必究:『白云居』 » 不修改数据库,WordPress全站启用https最简单的方法

赞 (1)