
1. 为什么修改域名后WordPress会无法访问很多WordPress站长都遇到过这样的尴尬在后台修改了网站域名结果整个站点直接打不开了。这种情况在使用Docker部署的WordPress时尤为常见。我去年帮客户迁移服务器时就踩过这个坑当时急得差点把键盘砸了。根本原因在于WordPress的记忆系统太顽固。它会把旧域名写进三个地方数据库核心表wp_options里的siteurl和home文章内容wp_posts表中的图片链接等配置文件wp-config.php中的常量定义就像搬家后没通知邮局改地址快递员还是会往老地址送包裹。WordPress的各个组件也会固执地寻找旧域名导致前端页面白屏、后台登录循环、资源加载失败等各种问题。最坑的是有些修改看似成功了比如通过临时修改wp-config.php能进后台但实际上数据库里还藏着大量旧域名。这就好比只改了门牌号没改房产证迟早要出问题。2. 第一步找回数据库访问权限2.1 查找Docker容器的MySQL密码当网站打不开时最头疼的就是连数据库都进不去。如果是用Docker部署的WordPress密码可能藏在容器配置里。我常用的方法是docker inspect wordpress_db | grep MYSQL_ROOT_PASSWORD这里的wordpress_db要换成你的MySQL容器名。如果当初部署时没特意设置默认容器名可能是db或者mysql。实在不确定的话先用docker ps查所有运行中的容器。有次我遇到个特殊情况客户把密码写在了docker-compose.yml里但文件找不到了。最后是通过查看容器的环境变量找到的docker exec wordpress_db env | grep MYSQL_2.2 连接数据库的三种方式拿到密码后推荐用这三种方式操作数据库服务器命令行适合Linux老手mysql -u root -p -h 127.0.0.1Adminer工具可视化操作我的最爱 临时启动一个Adminer容器docker run -d --link wordpress_db:db -p 8080:8080 adminer然后浏览器访问服务器IP:8080就能看到登录界面本地Navicat适合需要复杂操作时 需要确保服务器的3306端口对公网开放不建议长期开启3. 第二步彻底清洗数据库中的旧域名3.1 必须修改的核心字段在phpMyAdmin或命令行里执行这些SQL时一定要先备份我有次手滑把WHERE条件写错了结果把整个wp_posts表清空了...关键SQL语句如下-- 修改网站基础地址 UPDATE wp_options SET option_value REPLACE(option_value, 旧域名, 新域名) WHERE option_name IN (siteurl, home); -- 更新文章内容中的链接 UPDATE wp_posts SET post_content REPLACE(post_content, 旧域名, 新域名); -- 处理文章元数据 UPDATE wp_postmeta SET meta_value REPLACE(meta_value, 旧域名, 新域名); -- 修复文章修订版 UPDATE wp_posts SET guid REPLACE(guid, 旧域名, 新域名) WHERE post_type IN (post,page,attachment);3.2 容易被忽略的边角料除了上述核心表这些地方也可能藏着旧域名wp_comments表中的评论者头像链接wp_usermeta中的用户自定义字段wp_options里的上传路径设置建议用这个查询找出所有可能包含域名的字段SELECT * FROM information_schema.columns WHERE table_schema 你的数据库名 AND data_type IN (varchar,text,longtext);4. 第三步清理wp-config.php的临时修改4.1 定位配置文件在Docker环境中wp-config.php通常挂载在volume里。用这个命令找具体路径docker volume inspect wordpress_wordpress然后进入对应目录编辑文件vim /var/lib/docker/volumes/wordpress_wordpress/_data/wp-config.php4.2 检查残留定义重点删除或注释掉这两行如果之前临时添加过// define(WP_HOME,http://临时IP); // define(WP_SITEURL,http://临时IP);有次我发现客户站点异常就是因为这里同时存在新旧两个定义WordPress直接懵圈了。就像一个人同时收到两个不同地址的身份证系统根本不知道该信哪个。4.3 终极验证步骤完成所有修改后建议按这个顺序检查浏览器隐身模式访问新域名首页登录后台查看设置-常规中的地址编辑任意文章查看媒体库图片检查主题自定义设置中的链接如果发现某些图片还是显示旧域名可能是缓存问题。试试在SQL中强制刷新UPDATE wp_options SET option_value WHERE option_name rewrite_rules;最后提醒改完域名后别忘了去SSL证书服务商那里更新证书否则会出现https混合内容警告。我在Lets Encrypt的certbot命令后加个--redirect参数让它自动处理重定向规则。