今天所做的努力
都是在为明天积蓄力量

wordpress设置ssl导致排版错误,后台无法访问

昨天处理问题时,碰到一个wordpress部署了ssl访问排版错误,和网站后台访问连接重置问题。

以前没有处理过类似问题,百度相关教程https://zhangzifan.com/wordpress-ssl-link.html 网上也有非常多的各式各样的WordPress开启https访问的方法。

 

方法一、传统方式将WordPress开启整站HTTPS协议

1.登录和后台强制开启SSL,可以通过修改WP-config.php文件,直接在文件末尾加入以下两行代码:

define('FORCE_SSL_LOGIN', true); define('FORCE_SSL_ADMIN', true);

 

或者在确认WordPress站点已经开启https协议并可以通过https访问,那么可以直接登陆后台,通过“设置”中“常规”里面把“WordPress地址(URL)”、“站点地址(URL)”两个地址的http修改为https并保存。

WordPress站点修改为HTTPS协议

2.然后还需要确定的就是通过“设置”中“多媒体”菜单把“文件的完整URL地址”也改为https协议,如果文件的完整URL地址之前是缺省的,那么也就可以不用修改。

WordPress多媒体附件开启https协议

3.同时为了保证WordPress站点之前添加的各个链接或者多媒体文件把http协议改成https协议,我们还需要通过数据库SQL查询执行一条替换命令,代码如下:

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

 

以上代码以泪雪博客地址为例,使用时请按照自己数据库表名(wp_posts)和网站域名修改后在执行即可。

方法二、代码方式让WordPress开启整站HTTPS协议

我们都知道,我们如果使用了WordPress的多媒体上传和插入图片附件的时候,附件都被WordPress标记为了绝对链接,一般需要修改数据库,但这种方法子凡是非常不推荐的,对于不是非常熟悉数据库的同学们估计网站直接被毁也是可能的,所以子凡在这里推荐一种自己正在使用和即将在Fanly主题2.0支持的一种方法。

以下代码已于2017/2/5更新,不仅仅支持WordPress站内链接支持HTTPS协议,支持多域名的多媒体附件HTTPS协议,同时也新增方法二相对链接功能支持。

老规矩,编辑当前主题下的 function.php 文件,加入以下代码:

代码一:HTTPS绝对链接替换

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"); } }

 

代码二:HTTPS相对链接替换

 

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, '//'), strstr($siteurl, '//'), $content); $content = str_replace( 'http:'.strstr($upload_dir['baseurl'], '//'), strstr($upload_dir['baseurl'], '//'), $content); return $content; } ob_start("fanly_ssl_main"); } }

 

以上就为大家提供了两种实现的方式,方法一主要是通过直接修改WordPress的配置以及将之前的http协议直接通过数据库执行替换命令修改为https协议,这样算是一个一劳永逸的方式,同样网站以后也将必须使用https协议才能访问,如果哪天服务器关闭了SSL证书,那么很遗憾的告诉你,你还需要使用方法一中的方式反过来操作,如果你非常确定网站以后都会使用https协议,那么推荐使用方法一。
测试上面两种方法都不行,完全搞不到,今天让公司其他大神处理。
大神测试一下,发现是由于web在架构上使用了nginx反向代理,前端nginx后端apache,由于nginx反向代理导致wordpress程序中对应的链接获取不到就导致开启ssl后网站访问排版错误和后台访问不到。

解决办法:

修改wp-includes/load.php ,添加选中的代码这样获取正确的地址,现在后台和前台访问就没有异常。

 

 

 

 

赞(2)
未经允许不得转载:流觞博客 » wordpress设置ssl导致排版错误,后台无法访问
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

今天所做的努力都是在为明天积蓄力量

联系我们留言建议