这几天在调试主题维护网站的时候,发现Chrome提示我“您访问的页面不安全”,F12查看Debug,提示的关键词为Mixed Content
,意思是“混合的内容”,怎么解决Wordpress的Mixed Content呢?
Mixed Content一般出现为:当浏览器以加密形式(https)
加载页面html时Html页面时,该页面的部分资源文件(如图片、视频、样式表文件、脚本等)使用了非加密的http
方式进行加载,浏览器则认这是不安全的加载方式,会提示甚至阻断用户加载网页。

如下图所示,Mixed Content会严重影响搜索引擎优化,我这四百多想错误里边有一半都是加载http协议头的图片,因此都需要处理。

因此解决方案也很简单了,就是把页面中所涉内容之所有http协议头换成https,这一方面提高了访问安全性,同时也让网页看起更清爽,有利于用户体验。在Wordpress中有两种方式处理这样的问题,其一是用用一个php小函数将http全部跳转为https,其二则是改数据库,简单粗暴。
添加function将Wordpress附件变成https
很简单的一段代码,今时今日(2022/08/18)测试正常运行,将此段代码放入你Wordpress主题的function.php
或类似功能循环文件中,注意将其中的域名和范围修改成自己的。
//将附件变成HTTPS function replacehttp($content){ if( is_ssl() ){ $content = str_replace('http://www.shephe.com/wp-content/uploads', 'https://www.shephe.com/wp-content/uploads', $content); } return $content; } add_filter('the_content', 'replacehttp');
修改数据库将Wordpress正文中的http变成https
登录你的phpMyAdmin数据库管理面板,首先选中你wordpress的数据库,然后点击SQL,运行如下语句(请将域名修改成自己的),done!
UPDATE wp_posts SET post_content = replace(post_content, 'https://www.shephe.com/wp-content/uploads','https://www.shephe.com/wp-content/uploads');

囧,文章代码是啥都没有替换~
也可以搞成相对路径,比如 http://test.com/img/test.jpg 改成 //test.com/img/test.jpg 或者 /img/test.jpg