编辑
2025-07-06
服务器
00

目录

1. 问题描述
2. 连接到数据库
3. 更新WP Options里的主页设置
4. 更新文章,页面,链接,图片链接等里旧域名
5. 其他思考

wordpress.jpg

1. 问题描述

我的Wordpress是部署是通过Docker Compose与MySQL部署在一起的,网站的访问是通过Nginx反向代理给Wordpress的容器的。更换新域名后,我添加了新的解析,并重新生成了证书。在更新了Nginx的配置文件后,网站无法正常访问。

2. 连接到数据库

我先把MySQL的3306接口给发布出来,这样我可以从宿主机直接访问,因为MySQL容器里并没有MySQL的Client。

bash
#YAML文件的端口映射 ports: - "3306:3306" - "33060:33060" # 宿主机上连接到MySQL容器。 mysql -h 127.0.0.1 -P 3306 -u root -p

3. 更新WP Options里的主页设置

切换到Wordpress的数据库,然后更新WP Options里的HomeURL

bash
mysql> use wordpress_db; Database changed mysql> UPDATE wp_options SET option_value = 'https://collections.zenseek.site' WHERE option_name = 'siteurl'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> UPDATE wp_options SET option_value = 'https://collections.zenseek.site' WHERE option_name = 'home'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0

4. 更新文章,页面,链接,图片链接等里旧域名

先按这个命令查一遍。这是更新之后的结果,没更新前会有很长的输出。

bash
mysql> SELECT ID, guid FROM wp_posts WHERE guid LIKE '%OLD_DOMAIN%'; Empty set (0.00 sec) mysql> SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE meta_value LIKE '%OLD_DOMAIN%'; Empty set (0.00 sec) mysql> SELECT ID, post_title, post_content FROM wp_posts WHERE post_content LIKE '%OLD_DOMAIN%'; Empty set (0.06 sec)

替换数据库里的旧域名。提示有多少个match和多少个changed了。之后再查一遍就跟上面的输出一样了。

bash
mysql> UPDATE wp_posts SET post_content = REPLACE(post_content, 'OLD_DOMAIN', 'zenseek.site'); Query OK, 100 rows affected (0.30 sec) Rows matched: 330 Changed: 100 Warnings: 0 mysql> UPDATE wp_posts SET guid = REPLACE(guid, 'OLD_DOMAIN', 'zenseek.site'); Query OK, 329 rows affected (0.00 sec) Rows matched: 330 Changed: 329 Warnings: 0 mysql> UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'OLD_DOMAIN', 'zenseek.site'); Query OK, 5 rows affected (0.00 sec) Rows matched: 473 Changed: 5 Warnings: 0

5. 其他思考

在没更新域名解析和生成新的证书前,可以在Wordpress的后台更改主页地址。其他的更新可以通过wp search-replace 'https://your-old-domain.com' 'https://your-new-domain.com' --all-tables来直接替换旧的域名。但是Wordpress的容器里进行了精简,并没有wp的命令。其次,在进行任何的数据库的操作之前,可以对数据库先进行备份。我是在别处还有一样的实例,所以这一步就略过了。

wp_home_url.jpg

本文作者:潘晓可

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!