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

使用CodeIgniter点击链接时生产环境出现404页面未找到错误

解决CodeIgniter生产环境链接404问题

看起来你在把CodeIgniter项目部署到生产服务器时,遇到了base_url和site_url生成的链接触发404的问题,结合你给出的信息,我帮你梳理几个关键的排查和修复步骤:

1. 先检查CodeIgniter核心配置

首先确认application/config/config.php里的关键配置是否正确:

  • 设置正确的base_url:生产环境必须填写完整的域名(带协议),比如:
    $config['base_url'] = 'https://your-production-domain.com/';
    
    不要留空或者用相对路径,否则site_url生成的链接会出问题。
  • 清空index_page:因为我们用.htaccess去掉了URL里的index.php,所以要设置:
    $config['index_page'] = '';
    
  • 调整uri_protocol:部分服务器需要指定正确的URI协议,尝试改成:
    $config['uri_protocol'] = 'REQUEST_URI';
    
    如果还是不行,再试试AUTO。

2. 修复.htaccess配置

你给出的.htaccess内容不完整,而且存在多余空格的问题(比如!^(index\.php| (.*)\.swf里的空格会导致规则匹配错误),建议替换成标准的CodeIgniter重写规则:

DirectoryIndex index.php
RewriteEngine On

# 排除不需要重写的文件/目录,注意不要有多余空格
RewriteCond $1 !^(index\.php|forums|images|css|downloads|jquery|js|robots\.txt|favicon\.ico|.*\.swf)$
# 确保请求的不是真实存在的文件或目录
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 重写请求到index.php处理
RewriteRule ^(.*)$ index.php/$1 [L]

关键修复点:

  • 去掉规则里多余的空格,避免匹配错误;
  • 增加!-d条件,防止真实目录被错误重写;
  • 结尾加上[L]标记,确保这条规则执行后停止后续重写。

3. 确认服务器环境配置

  • 启用mod_rewrite模块:如果是Apache服务器,必须确保mod_rewrite已经启用。可以通过在PHP页面输出phpinfo(),搜索mod_rewrite确认;如果是共享主机,可能需要联系服务商开启,或者在cPanel的“Apache模块”里勾选开启。
  • 设置AllowOverride All:确保服务器允许.htaccess生效,在Apache的虚拟主机配置里需要添加:
    <Directory /path/to/your/project/root>
        AllowOverride All
        Require all granted
    </Directory>
    
    共享主机一般默认开启,但如果还是有问题,建议联系主机商确认。

4. 验证链接生成结果

最后,你可以在页面里临时输出echo site_url('View/page');,看看生成的URL是否是https://your-domain.com/View/page(不带index.php),如果生成的链接带index.php,那说明config.php的配置还是有问题,需要重新检查。

内容的提问来源于stack exchange,提问作者Muhammad Usman Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:11:19