CodeIgniter 4迁移后site_url返回旧域名如何解决?
解决CodeIgniter 4迁移后site_url指向旧域名的问题
1. 修正核心配置文件
找到app/Config/App.php,修改$baseURL参数为新域名:
public string $baseURL = 'https://domain.com/';
注意结尾必须加斜杠,同时要匹配当前服务器的协议(http/https)。
2. 检查环境变量(.env文件)
项目根目录的.env文件优先级高于Config配置,务必确认里面没有旧域名的残留配置:
# 找到这一行,替换为新域名 app.baseURL = 'https://domain.com/'
如果之前没启用.env,可以复制根目录的.env.example为.env后修改。
3. 清理框架缓存
CI4会缓存配置文件,即使修改了配置,缓存没清依然会用旧值:
- 手动删除
writable/cache/目录下的所有文件; - 或者用CLI命令快速清理:
php spark cache:clear
4. 排查服务器重定向规则
检查Nginx/Apache的配置,避免服务器层面强制跳转到旧域名:
- Nginx:查看站点配置的
server块,确认没有return 301或rewrite规则指向test.old-domain.com; - Apache:检查项目根目录或服务器配置里的
.htaccess文件,删除指向旧域名的Redirect或RewriteRule规则。
同时确认新服务器的SSL证书配置正常,避免因证书错误导致的异常跳转。
5. 修正Session与Cookie配置
旧域名的Cookie配置可能导致跳转异常:
- 打开
app/Config/Session.php,修改$cookieDomain为新域名:
// 如需支持子域名则用`.domain.com`,否则直接写`domain.com` public string $cookieDomain = 'domain.com';
- 手动清理浏览器的缓存和Cookie,避免旧域名的Cookie残留影响请求。
6. 检查路由与自定义重定向
- 查看
app/Config/Routes.php,确认没有路由规则或重定向指向旧域名; - 全局搜索项目代码,确认是否有
redirect()函数硬编码旧域名的情况(比如redirect('https://test.old-domain.com/xxx')); - 检查自定义的配置类或第三方库,确认是否有额外的base URL配置项。
7. 配置反向代理适配(如果使用)
如果新服务器搭配了反向代理或CDN,需要让CI4正确识别真实请求域名:
- 在
app/Config/App.php中开启代理支持并配置代理IP:
public bool $useProxy = true; // 添加你的代理服务器/CDN的IP地址 public array $proxyIPs = ['127.0.0.1', 'xxx.xxx.xxx.xxx'];
这样CI4会从X-Forwarded-Host等代理头中获取正确的用户访问域名。
内容的提问来源于stack exchange,提问作者user2812532
相关产品推荐
相关产品推荐

