#SSL时代# WordPress正文图片改为HTTPS引用的方法

ssl微魔在很早很早以前就一直在站点儿里吹逼SSL安全证书的重要性(穿越查看,揭穿微魔的谎言),到了2016年,伴随着LetsEncrypt、沃通的免费SSL的普及(此二者做到了StartSSL经营多年都没有做到的事情),安全证书(或者https安全协议)再也不是电子商务网站专属的标签了,个人博客已经开启了新一轮的技术革命(也可以理解为技术宅的ZUO)。

微魔之前分享了不少关于Letsencrypt的SSL的教程(传送),现在自己也在用。但是由于博客开博时间比较早(2011年),所以在开启SSL之前,相当数量的文章里面的插图还是http的引用,本来也没什么,但是在火狐上总会显示成黄色感叹号的小锁头,而非正常情况下的绿色锁头。作为重度的强迫症患者,微魔不得不全网搜寻解决方案。

一个治标不治本的方案是在主题的function.php文件中加入字符替换语句,这样读者在每次访问的时候会相应的把图片的http链接替换为https,而数据库的原始内容不变;另外,更根本的解决方案是,直接从SSH进入MySQL(微魔用的是MariaDB),用SQL语句替换。后者虽然能够长久解决问题,但对于不熟悉SQL的同学请谨慎操作。下面就这两个方法本文做简单介绍:

1.通过主题的function.php文件来批量替换

在主题文件的function.php(WP后台“外观”-“编辑”右侧可以找到)里加入如下代码(注意域名需要做相应修改

function replacehttp($content){
if( is_ssl() ){
$content = str_replace('http://www.域名.com/wp-content/uploads', 'https://www.域名.com/wp-content/uploads', $content);
}
return $content;
}
add_filter('the_content', 'replacehttp');

2.通过SQL语句进行正文的批量替换

操作前请务必对数据库进行备份(教程),以避免不可挽回的数据丢失!

登入MySQL或MariaDB(登录方法参见以前的教程

a.切换到WP数据库(把下文的VMVPS换成你自己的),不确定的话可以用“show databases;”命令查看当前有哪些数据库

USE VMVPS

b.运行如下语句批量替换(域名及路径替换称自己的)

UPDATE wp_posts SET post_content = replace(post_content, 'https://www.vmvps.com/wp-content/uploads','https://www.vmvps.com/wp-content/uploads');

运行只要没有报错就可以查看效果了,注意:以上两者选择其中一个就可以,如果你不熟悉SQL操作就选1,但由于每次页面访问都要运行函数(已做静态缓存除外),因此会有一定性能损失;如果对SQL比较熟悉,就可以用2,一劳永逸。

猜你 喜欢

关于作者: 微魔

小微魔,大智慧!

多条评论

  1. 直接不标记 http 或 https 最好,使用两个斜杠就可以了,例如:
    //www.vmvps.com/wp-content/uploads

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注