php打开https流图片,WordPress开启HTTPS后正文图片改为HTTPS两种方法

当WordPress站点切换到HTTPS后,为保持页面安全性,需要将文章中的HTTP图片链接改为HTTPS。本文介绍了两种方法:一种是在functions.php文件中添加代码实现动态替换,另一种是通过SQL语句直接批量替换数据库中的链接。方法一适用于不熟悉SQL的用户,但可能影响性能;方法二更彻底,适合熟悉SQL的用户,一次性解决问题。操作前务必备份数据库。
摘要由CSDN通过智能技术生成

WordPress 站点开启 HTTPS 后,文章中引用的图片就很有必要把 HTTP 统一改为 HTTPS,要不然会地址栏上的绿锁就会有黄色的三角,感觉是很不爽的。为了解决这个问题,我们有两种方法:一个是治标不治本的办法,就是在主题的  functions.php 文件中加入字符替换语句,这样读者在每次访问的时候会相应的把图片的 http 链接替换为 https,而数据库的原始内容不变;另一个彻底根治的办法是,直接进入数据库用 SQL 语句把 HTTP 直接替换为 HTTPS。下面就这两个方法本文做简单介绍:

00edb751f9025b4aafa4abf105a5a798.png

方法一:通过主题的functions.php文件来批量替换

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

/* 替换图片链接为 https */

/* 来源半夏小栈(https://www.banxia.me/995.html): */

function https_image_replacer($content){

if( is_ssl() ){

/*已经验证使用 $_SERVER[‘SERVER_NAME’]也可以获取到数据,但是貌似$_SERVER[‘HTTP_HOST’]更好一点*/

$host_name = $_SERVER[‘HTTP_HOST’];

$http_host_name=’http://’.$host_name.’/wp-content/uploads’;

$https_host_name=’https://’.$host_name.’/wp-content/uploads’;

$content = str_replace($http_host_name, $https_host_name, $content);

}

return $content;

}

add_filter(‘the_content’, ‘https_image_replacer’);

PS:boke112 认为应该不用那么复杂,直接使用以下代码可能会更加简练一些,毕竟大家的域名基本上都是固定的。

function replacehttp($content){

if( is_ssl() ){

$content = str_replace(‘http://域名/wp-content/uploads’, ‘https://域名/wp-content/uploads’, $content);

}

return $content;

}

add_filter(‘the_content’, ‘replacehttp’);

方法二:通过SQL语句进行正文的批量替换

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

a51937566ffcb0011b80772899f966c3.png

运行如下语句批量替换:

UPDATE wp_posts SET post_content = replace(post_content, ‘http://域名/wp-content/uploads’,’https://域名/wp-content/uploads’);

PS:记得将以上语句中的域名及路径个自己的,如果更改过数据库表的前缀,还要记得修改wp_为自己的前缀哦。

注意:

以上两种方法选择其中一个就可以,如果你不熟悉 SQL 操作就选方法一,但由于每次页面访问都要运行函数(已做静态缓存除外),因此会有一定性能损失;如果对 SQL 比较熟悉,建议直接使用方法二,这样就可以一劳永逸了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值