这几天在调试主题维护网站的时候,发现 Chrome 提示我“您访问的页面不安全”,F12 查看 Debug,提示的关键词为Mixed Content
,意思是“混合的内容”,怎么解决 WordPress 的 Mixed Content 呢?
Mixed Content 一般出现为:当浏览器以加密形式(https)
加载页面 html 时 Html 页面时,该页面的部分资源文件(如图片、视频、样式表文件、脚本等)使用了非加密的http
方式进行加载,浏览器则认这是不安全的加载方式,会提示甚至阻断用户加载网页。
如下图所示,Mixed Content 会严重影响搜索引擎优化,我这四百多想错误里边有一半都是加载 http 协议头的图片,因此都需要处理。
因此解决方案也很简单了,就是把页面中所涉内容之所有 http 协议头换成 https,这一方面提高了访问安全性,同时也让网页看起更清爽,有利于用户体验。在 WordPress 中有两种方式处理这样的问题,其一是用用一个 php 小函数将 http 全部跳转为 https,其二则是改数据库,简单粗暴。
1. 修改 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');
2. 修改数据库将 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