在Discuz更换域名后直接导入旧数据库会出现跳转老域名的问题,以下是专业解决方案:
1. **核心配置文件修改**
需修改以下3处配置:
- // config/config_global.php
- $_G['siteurl'] = 'https://321.com/';
- $_G['sitedomain'] = '321.com';
- // config/config_ucenter.php
- define('UC_API', 'https://321.com/uc_server');
- // uc_server/data/config.inc.php
- define('UC_DOMAIN', '321.com');
复制代码
2. **后台强制更新**
进入管理后台 → 工具 → 更新缓存,勾选所有选项执行,特别注意:
- 清空模板缓存
- 更新站点信息
- 重建主题封面
3. **数据库深度清理**
需执行SQL替换(操作前务必备份):
- UPDATE pre_common_setting SET svalue = REPLACE(svalue, '123.com', '321.com') WHERE skey IN ('siteurl', 'my_siteurl', 'domain');
- UPDATE pre_common_syscache SET data = REPLACE(data, '123.com', '321.com');
- UPDATE pre_ucenter_applications SET url = 'https://321.com/uc_server' WHERE appid = 1;
复制代码
4. **特殊字段处理**
对可能存储序列化数据的表需要特殊处理:
- UPDATE pre_common_plugin SET modules = REPLACE(modules, 's:7:"123.com";', 's:7:"321.com";') WHERE modules LIKE '%123.com%';
复制代码
5. **附件路径修复**
在管理后台 → 全局 → 上传设置:
- 检查附件URL地址是否为`https://321.com/data/attachment`
- 更新所有内容页面的附件引用路径
6. **UCenter通信验证**
通过FTP检查uc_server/data目录下的配置文件,确保:
- // uc_server/data/config.inc.php
- define('UC_API', 'https://321.com/uc_server');
- define('UC_DOMAIN', '321.com');
复制代码
7. **伪静态规则重置**
登录后台 → 全局 → SEO设置 → 恢复默认规则,然后重新配置伪静态:
- 重新生成.htaccess或web.config文件
- 在Nginx配置中更新server_name为321.com
8. **深度数据清洗(高级操作)**
对以下表进行深度清洗:
- UPDATE pre_common_member SET site = REPLACE(site, '123.com', '321.com');
- UPDATE pre_common_nav SET url = REPLACE(url, '123.com', '321.com');
- UPDATE pre_common_block SET data = REPLACE(data, '123.com', '321.com');
复制代码
操作提示:
1. 建议使用phpMyAdmin执行SQL替换
2. 替换后使用Discuz后台的「工具」→「文件权限检查」验证核心文件完整性
3. 更新完成后在SSH执行:
- rm -rf ./data/template/*
- rm -rf ./data/threadcache/*
复制代码
如仍有残留跳转,可通过DZ插件网的「全站链接替换工具」进行深度清洗。该问题通常由未彻底清除的模板缓存、插件缓存或第三方扩展数据引起,建议采用分步排查法逐步验证各模块的域名配置。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |