宝塔面板WordPress博客启用HTTPS后浏览器没有小绿锁解决方案
in 各种技术 with 0 comment

宝塔面板WordPress博客启用HTTPS后浏览器没有小绿锁解决方案

in 各种技术 with 0 comment

没有“小绿锁”的原因无非就是网页内依然使用了http://协议的文件,比如图片、js、css等静态资源;这个你可以查看源码,搜索一下 http:// 就能看到。

简单粗暴型解决方案

编辑nginx配置文件,(这里以宝塔面板为例)在server中插入这一句代码

add_header Content-Security-Policy "upgrade-insecure-requests";

11.png

这样做最省事,即使网页中存在http://资源,浏览器也会自动处理以https://形式加载。此方案由@贰哈提供,分享于NiRvana主题售后群。

稳定至上型解决方案

登录phpmyadmin,先备份数据库文件!先备份数据库文件!先备份数据库文件!!然后执行以下命令(使用时请按照自己数据库表名(wp_posts)和网站域名修改后再执行即可。)

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

也可以导出数据库文件 .sql (先备份一份放一边!) 然后清空数据库,使用代码编辑器(别用txt编辑器打开!)批量替换该文件中的http://你的域名https://你的域名,替换好之后再上传回去。

专治各种不服型解决方案

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

//WordPress SSL 证书变绿色 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");
    }
}

对于此方案我发现了一个重要BUG:它会把你网站所有指向http://的链接全部强制替换成https:// ,即使你的友链也不放过,请谨慎使用!

为什么还没有小绿锁?

一般用上面的方法就可以成功的看到小绿锁,如果没有那可能的原因如下:

css中加载了外部http://远程图片资源,需要改。
网站程序/主题中加载了外部http://资源,如CSS、js、图片等,需要改。

版权声明

本文转载自:垃圾博客,原文地址:https://www.lajiboke.com/14.html

Responses