前言
迁移WordPress到新服务器后,发现文章的图片链接变成了内网地址,以至于用公网访问文章刷不出图片。由于含有图片的文章较多,手动一张张修改地址显然不现实。于是考虑批量修改所有文章中所含图像的URL。
怎么做
需要修改WP使用的数据库。这里以MySQL为例。在部署了WP用MySQL的服务器(如果是Docker容器部署,参考这篇文章[解决策 – Docker]章节进入容器操作)执行以下指令,以root身份登录数据库:
mysql -u root -p
# 会提示你输入密码
接下来的操作如下:
mysql> use wordpress # 这里的“wordpress”是数据库名称,请根据实际情况修改
mysql> select * from wp_posts limit 5\G
# 以下示例地址“http://192.168.1.1:8000/”请根据实际情况修改
mysql> update wp_posts set post_content = replace(post_content, 'http://192.168.1.1:8000/', '/');
mysql> update wp_posts set post_content_filtered = replace(post_content_filtered, 'http://192.168.1.1:8000/', '/');
mysql> update wp_posts set guid = replace(guid, 'http://192.168.1.1:8000/', '/');
mysql> quit
然后检查文章中的图像能否正常显示。
一点说明
你可能注意到,上述SQL操作中将内网地址通过replace
命令替换成了“/”,即使用相对路径。如果图片都保存在你的WP媒体库中,通过这种方式可以有效避免下次迁移再次发生图片链接坏掉的情况。