base_url必须设为带协议和结尾斜杠的完整url,如'http://localhost/myapp/';不可留空、用相对路径或缺协议/路径;静态资源用base_url(),链接用site_url();多环境建议动态判断或用环境变量配置。

base_url 是 CodeIgniter 生成静态资源链接(如 CSS、JS、图片)时依赖的核心配置,必须设为带协议和域名的完整 URL,不能留空或只写相对路径。
1. 在 config.php 中手动设置
打开 application/config/config.php,找到这一行:
$config['base_url'] = '';
替换成你项目的实际访问地址,例如:
- 本地开发:
$config['base_url'] = 'http://localhost/myapp/'; - 线上环境:
$config['base_url'] = 'https://www.example.com/'; - 子目录部署:
$config['base_url'] = 'https://example.com/project/';(注意末尾斜杠)
务必包含协议(http:// 或 https://)和结尾的斜杠,否则 base_url('css/style.css') 会拼出错误路径。
2. 不要依赖自动检测
CodeIgniter 不会自动推断 base_url,即使你设置了 $config['uri_protocol'] = 'AUTO',它也只影响路由解析,不影响 base_url() 函数。留空或填错会导致所有静态资源 404。
常见错误写法(应避免):
-
$config['base_url'] = '/myapp/';(缺少协议,浏览器按当前页面协议+路径拼接,易出错) -
$config['base_url'] = 'myapp/';(相对路径,完全不可用) -
$config['base_url'] = 'http://localhost';(缺项目路径,资源加载失败)
3. 配合 site_url 使用更安全
base_url() 专用于静态资源;控制器/方法链接请统一用 site_url('controller/method')。后者基于 $config['index_page'] 和路由规则生成,与 base_url 无关,但需确保 url 辅助函数已加载(在 autoload.php 中启用或手动 $this->load->helper('url');)。
4. 多环境切换建议
开发、测试、生产环境 URL 不同时,可借助条件判断动态赋值,例如:
if (strpos($_SERVER['HTTP_HOST'], 'localhost') !== false) {<br> $config['base_url'] = 'http://localhost/myapp/';<br>} else {<br> $config['base_url'] = 'https://www.example.com/';<br>}
更规范的做法是结合环境变量或独立配置文件管理,避免硬编码泄露敏感信息。











