网站搬家后网站图片无法显示,是很多站长会遇到的问题。问题的原因有很多种,魏艾斯今天遇到的是一个网友从阿里云轻量应用服务器搬家到阿里云ECS服务器,之前图片还好好的之后就无法显示了。既然遇到了问题就要想办法解决。
隐藏
网站情况介绍
网站放在阿里云轻量应用服务器中,因为快到期续费贵(1核2G内存8M峰值带宽要1600多元/年)而ECS服务器优惠活动价格很便宜(2核4G内存5M带宽的共享型s6服务器 1300多元/3年),就打算搬家过去。于是从阿里云·云小站优惠活动页面购买了上述服务器开始部署宝塔面板,在旧的轻量应用服务器上面备份网站,搬家。
搬家过程挺顺利,网站文件和数据库也都上传到服务器上了。因为网站图片多且尺寸大,一直使用阿里云cdn配合阿里云oss对象存储存放图片。
结果搬家之后网站所有图片都无法显示了。
分析排查过程
经过大量分析,排查了以下这些要素:
- oss插件参数正常、测试读、写、删除正常;
- WordPress后台媒体库用oss插件替换,图片大且多所以上传的图片直接传到阿里云oss中,产品图片均不保留,只有少量程序用的图片在服务器;
- 卸载插件重新安装问题依旧;
- Access Key和Secret Key没有改动过;
- 阿里云·云解析、阿里云cdn、阿里云oss没问题,搬家后 IP地址也做了相应修改;
- 网站主题切换到2021默认主题,图片仍旧不显示;
- SSL证书添加到cdn和宝塔面板了,都正常显示;
- WordPress能正常打开前后端页面;
- 宝塔面板中的301重定向设置好了;
- object-cache.php文件添加了,memcached安装且生效了;
- 为了解决问题把网站删除重建(文件和数据库未删除),仍旧不显示;
- 主题自带的webp图片压缩功能也取消了,仍旧不显示图片;
- nginx、php、mysql、服务器也重启过,无效;
- cdn反复刷新过了;
不限于上面那些办法,反正差不多所有能解决问题的办法都试过了,图片还是不显示。
接着查看图片不显示的具体原因,在浏览器中按 F12开发者工具,再按F5刷新前端页面,看到有大量红色状态:403的图片文件,正是不显示的图片。点击图片后在页面右侧点击 Preview,显示403 Forbidden,如下图所示:
看英文提示的意思是:服务器没有权限获取阿里云oss中的文件。看来问题还是集中在oss权限中了。于是直接打开阿里云官网,进入oss管理控制台,找到【权限管理】,把右侧页面的选项一个个仔细琢磨。
读写权限:公共读,这个没问题;
访问控制RAM:账号密码没有改过;
防盗链:现在唯一怀疑的就是这里了。复制网站页面中任意图片网址到浏览器中是可以看到图片的(图片oss源地址可以直接访问),这时候朋友想起来搬家后改过 WordPress后台>设置中的域名是主域名(不带www的),经过查询阿里云文档>访问oss出现403状态码、阿里云oss设置防盗链内容,初步怀疑是因为在oss的防盗链中没有添加 https://example.com的缘故。手动添加后图片显示出来了,问题解决。
后来分析原因时网友提到:
1、一直使用谷歌浏览器访问网站,而谷歌浏览器的地址栏只显示主域名(即使打开的是www域名也不显示www前缀),他对这方面不太熟悉还以为网站主域名一直都是主域名呢,这方面造成了误导。
2、从头到尾一直对老魏强调网站主域名是不带www的域名,而且主动把 WordPress后台>设置中的两行网址都改成了主域名。
3、偏偏阿里云oss的防盗链中没有添加主域名进入白名单,所以会被拦截在外,不予显示。
按照阿里云oss防盗链规则,通配符星号(*)表示使用星号代替0个或多个字符。例如配置为*.example.com,可匹配如help.example.com、www.example.com等地址。但不匹配example.com。
主域名MX记录与cname记录冲突
后续网友又遇到一个新问题如下:
阿里云主域名如果通过cdn访问网站,那么必须添加cname记录,这时候如果想再添加MX记录(企业邮箱),页面会提示MX记录与cname记录冲突。解决办法是把主域名添加A记录解析到服务器IP,同时为了安全,宝塔面板>安全,设置禁止ping。
这时候就可以正常添加主域名的MX记录了。
暂无评论内容