公告:2018继续前行,子凡祝所有来到泪雪博客的友们新春快乐!

最近这些天子凡一直在忙于折腾泪雪博客及博客的搬家,再到Fanly主题的 2.0 版本优化升级,同时泪雪博客也接入SSL 证书,支持HTTPS协议访问了,所以在这里子凡想要分享一个关于 WordPress 网站支持 SSL 的问题,当然 WordPress 程序是 100%支持 SSL 的,但是不排除我们网站的主题模板以及站内链接都是支持HTTPS 协议的。

WordPress 整站开启 HTTPS 协议,让站内链接支持 SSL 证书

网上也有非常多的各式各样的 WordPress 开启 https 访问的方法,这里子凡就简单的给大家分享两种方法吧!

方法一、传统方式将 WordPress 开启整站 HTTPS 协议

1.登录和后台强制开启 SSL,可以通过修改 wp-config.php 文件,直接在文件末尾加入以下两行代码:

1
2
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

或者在确认 WordPress 站点已经开启 https 协议并可以通过 https 访问,那么可以直接登陆后台,通过“设置”中“常规”里面把“WordPress 地址(URL)”、“站点地址(URL)”两个地址的 http 修改为 https 并保存。

WordPress 站点修改为 HTTPS 协议

2.然后还需要确定的就是通过“设置”中“多媒体”菜单把“文件的完整 URL 地址”也改为 https 协议,如果文件的完整 URL 地址之前是缺省的,那么也就可以不用修改。

WordPress 多媒体附件开启 https 协议

3.同时为了保证 WordPress 站点之前添加的各个链接或者多媒体文件把 http 协议改成 https 协议,我们还需要通过数据库 SQL 查询执行一条替换命令,代码如下:

1
update wp_posts set post_content = replace(post_content, 'http://zhangzifan.com','https://zhangzifan.com');

以上代码以泪雪博客地址为例,使用时请按照自己数据库表名(wp_posts)和网站域名修改后在执行即可。

方法二、代码方式让 WordPress 开启整站 HTTPS 协议

我们都知道,我们如果使用了 WordPress 的多媒体上传和插入图片附件的时候,附件都被 WordPress 标记为了绝对链接,一般需要修改数据库,但这种方法子凡是非常不推荐的,对于不是非常熟悉数据库的同学们估计网站直接被毁也是可能的,所以子凡在这里推荐一种自己正在使用和即将在 Fanly 主题 2.0 支持的一种方法。

以下代码已于 2017/2/5 更新,不仅仅支持 WordPress 站内链接支持 HTTPS 协议,支持多域名的多媒体附件 HTTPS 协议,同时也新增方法二相对链接功能支持。

老规矩,编辑当前主题下的 functions.php 文件,加入以下代码:

代码一:HTTPS 绝对链接替换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//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 相对链接替换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//WordPress SSL
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, '//'), strstr($siteurl, '//'), $content);
			$content = str_replace( 'http:'.strstr($upload_dir['baseurl'], '//'), strstr($upload_dir['baseurl'], '//'), $content);
			return $content;
		}
		ob_start("fanly_ssl_main");
	}
}

以上就为大家提供了两种实现的方式,方法一主要是通过直接修改 WordPress 的配置以及将之前的 http 协议直接通过数据库执行替换命令修改为 https 协议,这样算是一个一劳永逸的方式,同样网站以后也将必须使用 https 协议才能访问,如果哪天服务器关闭了 SSL 证书,那么很遗憾的告诉你,你还需要使用方法一中的方式反过来操作,如果你非常确定网站以后都会使用 https 协议,那么推荐使用方法一。

如果你是一个喜欢折腾,有太多不确定因素,那么可以使用子凡提供的方法二,同样还提供了两种代码解决方式都可以完美支持 HTTPS 协议,如果你的站点需要支持 HTTP 和 HTTPS 双协议共存,那么就选择使用代码二的相对链接替换方法吧,反之子凡则推荐实用代码一的绝对链接替换方法。

到这里你的 WordPress 站内链接都将使用 HPPTS 协议,非本站点的链接保持原样,比如友情链接和站外图片链接等。

写在最后:如果你的 WordPress 站点开启了 HTTPS,如果在 360 浏览器、猎豹浏览器等打开地址栏前未显示绿色小锁图标,那么说明你的网站加载了非 SSL 引入的资源,建议大家仔细排查。

最后在告诉 Fanly 主题用户一个好消息,Fanly 2.0 将支持 SSL,敬请期待咯!

除非注明,否则均为泪雪博客原创文章,转载请以链接形式标明本文地址

本文链接:https://zhangzifan.com/wordpress-ssl-link.html

发表评论

  1. 名表回收
    1楼
    名表回收 4周前 (01-30)

    我们网站用方法二的代码二做好了,谢谢分享了。我还有个问题:想让网站默认打开是https,但同时http也可以打开,不知道能不能实现啊?谢谢了!

    • 张子凡
      回复
      张子凡 3周前 (01-30)
      回复 @名表回收 :做一下301跳转即可
      • 名表回收
        回复
        名表回收 3周前 (01-31)
        回复 @张子凡 :谢谢了,亲
      • 名表回收
        回复
        名表回收 3周前 (01-31)
        回复 @张子凡 :你好,我在做301跳转后访问网站其他标签时出现:The requested URL was not found on this server. 这个该怎么破?谢谢亲了!
        • 张子凡
          回复
          张子凡 3周前 (01-31)
          回复 @名表回收 :这应该是配置301错误导致的,其实一般情况你WordPress后台设置中是https基本就可以了
  2. yangyzp
    2楼
    yangyzp 1个月前 (01-20)

    “通过“设置”中“常规”里面把“WordPress地址(URL)”、“站点地址(URL)”两个地址的http修改为https并保存。”===
    这样设置后,进不去后台管理了~~~怎么恢复?

    • 张子凡
      回复
      张子凡 1个月前 (01-20)
      回复 @yangyzp :通过数据库修改_options表中字段名option_name值为siteurl和home的两个的option_value即可
  3. 挨踢小茶
    3楼
    挨踢小茶 2个月前 (12-28)

    哈哈有缘喔,昨天才加的友链,今天就搜到你的文章哈。

    • 张子凡
      回复
      张子凡 2个月前 (12-30)
      回复 @挨踢小茶 :哈哈哈,那必须的啊,相当给力是吧
  4. 魏星博客
    4楼
    魏星博客 6个月前 (08-25)

    用了此方法出现两个问题,一、首页页面无CSS样式,二、后台打不开,显示“服务器将该地址循环重定向”,最后前后台都没有任何内容了,直接白屏!

    • 张子凡
      回复
      张子凡 6个月前 (08-29)
      回复 @魏星博客 :如果出现这个情况请不要使用第二种方法,因为第二种方法每次页面访问都需要占用服务器资源,所以会出现页面空白的情况,你可以直接通过WordPress后台将地址修改为https,媒体文件地址可能也需要手动改一下,并且使用SQL替换语句将文章内容替换为https域名地址即可,如果主题中的链接是绝对地址,可能也需要改一下。
  5. bokit
    5楼
    bokit 9个月前 (05-17)

    还是有点蒙蒙的,,,我的网站刚建立的就提示非安全链接。估计就是你说的这个事情吧。我再了解了解再请教一二。

  6. 立悟博客
    6楼
    立悟博客 9个月前 (05-15)

    方法2有效,谢谢

    • 张子凡
      回复
      张子凡 9个月前 (05-16)
      回复 @立悟博客 :嗯嗯,好的
  7. 青衫
    7楼
    青衫 10个月前 (04-20)

    我用方法一后,网站前台全部错位,后台直接进不去,一进就显示,服务器将该地址循环重定向,我又进数据库,把地址从新改回http,依然进不去,感觉已经无解了,心好累

    • 张子凡
      回复
      张子凡 10个月前 (04-26)
      回复 @青衫 :建议用后面的方法
    • 魏星博客
      回复
      魏星博客 6个月前 (08-25)
      回复 @青衫 :我的也是这种情况,最终问题解决了吗,怎么解决的?
      • 晓东
        回复
        晓东 2个月前 (12-21)
        回复 @魏星博客 :我也是和你们一样
  8. 阿瑾
    8楼
    阿瑾 11个月前 (04-07)

    这个我用了还是显示我有不安全的连接 我f12查 图片还是http的

    • 张子凡
      回复
      张子凡 11个月前 (04-09)
      回复 @阿瑾 :这个只对WordPress上传的附件路径生效,其它外链就没办法了
  9. 流年哔哔
    9楼
    流年哔哔 11个月前 (04-03)

    用了代码,网站打开空白,不知道怎么回事,请教一下?

    • 张子凡
      回复
      张子凡 11个月前 (04-04)
      回复 @流年哔哔 :建议用方法二中的相对路径的方式试试
  10. 诗梦
    10楼
    诗梦 12个月前 (03-12)

    诗梦博客http://www.mom1.cn

    • 张子凡
      回复
      张子凡 12个月前 (03-12)
      回复 @诗梦 :你站点并不是用的完整URL?或者并没有设置,代码根本就没有获取到你的站点URL
  11. 诗梦
    11楼
    诗梦 12个月前 (03-10)

    姐姐我使用你的相对链接,然后全站ssl友链也是全部是ssl的了

    • 张子凡
      回复
      张子凡 12个月前 (03-11)
      回复 @诗梦 :通过你反馈的问题我再次测试过代码,是没有任何问题的,相对链接和绝对链接均不会影响站外链接,也就是非当前站点域名是不会被修改的,请检查你的网站是否存在功能相似的代码或插件等功能在测试,同样也可以使用我提供的第一种方法
      • 诗梦
        回复
        诗梦 12个月前 (03-11)
        回复 @张子凡 :文章那里的链接带s不信你看我博客
        • 张子凡
          回复
          张子凡 12个月前 (03-12)
          回复 @诗梦 :我怎么看你博客?
          • 诗梦
            回复
            诗梦 12个月前 (03-12)
            回复 @张子凡 :能加QQ吗
            • 张子凡
              回复
              张子凡 12个月前 (03-12)
              回复 @诗梦 :可以的,592651505
      • 诗梦
        回复
        诗梦 12个月前 (03-12)
        回复 @张子凡 :文章内容的链接和友链的都带https://了
  12. 林侦通
    12楼
    林侦通 1年前 (2017-02-05)

    感谢分享,我的博客已经用上,非常实用!!!十分感谢。。

    • 张子凡
      回复
      张子凡 1年前 (2017-02-08)
      回复 @林侦通 :好的,谢谢支持
  13. 抛丸机网
    13楼
    抛丸机网 1年前 (2016-12-23)

    就改一下这个就好了吗

    • 张子凡
      回复
      张子凡 1年前 (2016-12-24)
      回复 @抛丸机网 :首先服务器上你的先配置安装好SSL证书才行