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

将CodeIgniter项目从Windows迁移至Ubuntu 16.04后遇CI自定义404错误

解决CodeIgniter迁移至Ubuntu 16.04后持续404的问题

我之前迁移CI项目到Ubuntu时也踩过类似的404坑,结合你的配置细节,咱们一步步排查解决:

1. 启用Apache的mod_rewrite模块

Ubuntu默认没开启这个模块,但CI的路由规则(尤其是去掉index.php的场景)依赖它:

  • 执行命令启用模块:
    sudo a2enmod rewrite
    
  • 重启Apache生效:
    sudo service apache2 restart
    

2. 完善虚拟主机的目录权限配置

你的虚拟主机配置缺少<Directory>块,这会导致Apache不识别目录下的.htaccess规则,也可能限制了目录访问权限。修改虚拟主机配置文件(通常在/etc/apache2/sites-available/下):

<VirtualHost *:80>
    ServerAdmin mymail@mymail.com
    ServerName mywebiml.com
    ServerAlias www.mywebiml.com
    DirectoryIndex index.php
    DocumentRoot /var/www/html/CLASE

    # 新增这个目录配置块
    <Directory /var/www/html/CLASE>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All  # 允许.htaccess生效
        Require all granted
    </Directory>
</VirtualHost>

修改后重载Apache:

sudo service apache2 reload

3. 调整CodeIgniter核心配置

  • 设置正确的base_url:不要留空,填上你的域名:
    $config['base_url'] = 'http://mywebiml.com/';
    
  • 优化URL路由(可选但推荐):如果想去掉URL里的index.php,先在CLASE根目录创建.htaccess文件,内容如下:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
    
    然后修改config.php里的index_page配置:
    $config['index_page'] = '';
    

4. 修复文件与目录权限

Ubuntu下Apache以www-data用户运行,必须确保CI目录的权限正确:

  • 递归设置目录权限为755:
    sudo chmod -R 755 /var/www/html/CLASE
    
  • 递归设置文件权限为644:
    sudo chmod -R 644 /var/www/html/CLASE/*
    
  • 修改目录所有者为www-data:
    sudo chown -R www-data:www-data /var/www/html/CLASE
    

最后验证

完成以上步骤后,重启Apache,访问http://mywebiml.com应该就能正常加载了。如果还是出现404,可以查看Apache的错误日志定位具体问题:

tail -f /var/log/apache2/error.log

内容的提问来源于stack exchange,提问作者Ivan M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:18:21