最近帮朋友搬家了一个Zblog网站,中途遇到了点问题,记录一下,防止以后再次碰见同样情况时手足无措。
网站配置
系统环境:Linux2.6.32, Apache; PHP7.2.15x64,数据库:mysqli5.1.48(部署在阿里云云虚拟主机中)。
网站设置:绑定域名已开启强制HTTPS加密访问,头部文件加入了浏览器自动升级HTTPS请求代码,开启了灯箱、延迟加载、Dplayer等zblog插件。
目标:搬家VS更换域名(HTTPS换到HTTP域名)
搬家过程
按照常规方式备份了网站数据和数据库,过程没什么好写的,和网上大部分的教程都一样。就是全部导入完成后,出现了两个问题。
1、点击网站任意链接,强制跳转HTTPS加密访问。
2、网站全部CSS样式均不显示,排版错乱,整个网页的布局和结构丢失。
问题反思
实际上Zblog搬家还是很简单的,通常情况下按照正常流程就不会出现什么问题,不像WP调用的都是绝对地址,还要去数据库修改网站域名,替换新旧链接,否则就会导致图片不显示、后台进不去之类的问题。至少按照果果本人的经验,之前搬家除了偶尔config这个配置文件有时候会不小心输错以外,就没碰见过别的问题。
个人猜测出现以上问题的原因:
CSS样式不显示或许是调用地址出错,也可能是强制开启https后,http的域名这边无法正确读取。因此首先要解决的问题是关掉强制HTTPS设置。
1、去阿里云虚拟主机管理后台,关掉原网站的强制HTTPS加密访问,重新备份,重新导入,问题依旧没有解决,和第一次差不多,只不过这次变成了只有点击导航链接才会强制跳转HTTPS,文章链接有的时候跳,有的时候不跳。
2、这时,我就很纳闷了,原站也关掉了HTTPS才备份的,为什么新站还会跳转呢?通过和朋友交流得知,之前他的网站在360浏览器报过错,可能是在主题模板文件里加了强制HTTPS请求标识。经过一番搜索和查询,终于找到了罪魁祸首,在header文件里,有下面这行代码,果断删掉。
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
3、清空浏览器缓存,重新编译文件后,终于不再跳转HTTPS了,可CSS样式依旧不显示,此时我也有点无可奈何了,难道是因为某些插件搬家过程中出错或者是与当前系统版本不兼容?
4、尝试调换PHP版本,从7.2一路尝试到了7.4,终于可以显示CSS样式了,图片也都正常了。再切换到7.2,还是像之前一样。通过切换版本让我知道了,搬家过程是没有问题的,现在搬过来的文件都正常,要不然PHP7.4也不会正常显示对吧。
5、重新排查CSS引用路径问题,终于让我找到了问题关键所在,他的主题是采用绝对地址引用CSS的。
{$host}zb_users/theme/{$theme}/style/主题ID-Index.css
只需要把{$host}改为/,就可以变成绝对路径,图片立刻在PHP7.2版本也显示了,后来发现网页打开有点慢,又把所有的JS、CSS引用地址的绝对路径均改为了相对路径。
最后,由于部分主题配置缺失,从原网站复制了一下,OK,大功告成啦!