WordPress本地XAMPP站点迁服务器资源加载失败及1146报错解决
WordPress迁移后静态资源加载失败解决方案
问题原因说明
样式、JS、图片全部加载失败的核心原因是数据库中残留了本地搭建时的http://localhost/HomeSmartEnergy/域名,get_template_directory_uri()等所有站点地址相关函数,都是读取数据库中存储的站点地址配置输出的,不需要修改主题函数代码。
之前执行SQL报错是因为直接使用了教程里的占位符TABLE_NAME、FIELD_NAME,没有替换为实际数据库中的表名、字段名,且选错了操作数据库(报错信息显示操作的是markpric_wo3库,实际使用的是markpric_Homesmart2库)。
修复步骤
1. 锁定站点根地址配置
打开服务器站点根目录下的wp-config.php文件,添加以下两行配置,强制指定线上站点地址,避免后台配置读错:
define('WP_HOME', 'http://live.homesmartenergy.co.uk'); define('WP_SITEURL', 'http://live.homesmartenergy.co.uk');
保存文件后先刷新站点,确认首页基础跳转地址已经切到线上域名。
2. 全量替换数据库中残留的本地地址
注意:WordPress部分主题、插件配置是序列化存储的,直接裸写SQL替换可能导致序列化数据长度不匹配、配置丢失,优先使用第一种方法。
方法一:WP-CLI替换(无数据损坏风险,推荐)
如果服务器支持WP-CLI命令,进入站点根目录依次执行以下两条命令,会自动替换所有表中的地址、自动处理序列化数据:
wp search-replace 'http://localhost/HomeSmartEnergy/' 'http://live.homesmartenergy.co.uk/' --all-tables wp cache flush
方法二:phpMyAdmin手动执行SQL替换
- 登录phpMyAdmin后,一定要先选中你实际使用的数据库
markpric_Homesmart2,不要在其他库下执行SQL - 把下面SQL语句里的
wp_表前缀替换为你自己数据库实际的表前缀(安装时没改过默认就是wp_),逐个执行:
-- 替换站点核心地址配置 UPDATE wp_options SET option_value = replace(option_value, 'http://localhost/HomeSmartEnergy/', 'http://live.homesmartenergy.co.uk/') WHERE option_name IN ('home', 'siteurl'); -- 替换文章/页面内容、文章附件地址 UPDATE wp_posts SET post_content = replace(post_content, 'http://localhost/HomeSmartEnergy/', 'http://live.homesmartenergy.co.uk/'); UPDATE wp_posts SET guid = replace(guid, 'http://localhost/HomeSmartEnergy/', 'http://live.homesmartenergy.co.uk/'); -- 替换文章元数据、特色图等资源地址 UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://localhost/HomeSmartEnergy/', 'http://live.homesmartenergy.co.uk/'); -- 替换分类/标签元数据里的资源地址 UPDATE wp_termmeta SET meta_value = replace(meta_value, 'http://localhost/HomeSmartEnergy/', 'http://live.homesmartenergy.co.uk/'); -- 替换评论内容里插入的本地地址 UPDATE wp_comments SET comment_content = replace(comment_content, 'http://localhost/HomeSmartEnergy/', 'http://live.homesmartenergy.co.uk/');
3. 收尾验证
- 替换完成后登录WordPress后台,进入「设置-固定链接」页面,无需修改任何内容直接点击保存,刷新站点伪静态规则
- 清空所有缓存:包括WordPress缓存插件缓存、服务器页面缓存、CDN缓存、浏览器本地缓存
- 打开浏览器开发者工具切换到Network面板,按
Ctrl+Shift+R硬刷新页面,检查所有CSS、JS、图片资源的请求地址是否已经切换为线上域名,状态码是否为200
效果参考
- 预期正常效果:

- 异常故障效果:

内容的提问来源于stack exchange,提问作者crad98
相关产品推荐
相关产品推荐

