You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 15:28:27