部署CodeIgniter项目遇404错误,本地运行正常求排查方案
解决CodeIgniter部署后404 Page Not Found问题
刚部署CodeIgniter碰到404确实挺头疼的,结合你描述的情况,我帮你梳理几个最容易遗漏的配置点,你挨个排查下:
确认Apache的Rewrite模块已开启
很多线上服务器默认没开启mod_rewrite模块,这会导致你的.htaccess规则完全失效。- 如果你用的是Ubuntu/Debian系统,执行命令开启:
sudo a2enmod rewrite - 然后重启Apache服务:
sudo systemctl restart apache2 - 如果你用的是CentOS/RHEL,需要编辑
/etc/httpd/conf/httpd.conf,找到LoadModule rewrite_module modules/mod_rewrite.so这一行,去掉前面的注释符号#,然后重启httpd:sudo systemctl restart httpd
- 如果你用的是Ubuntu/Debian系统,执行命令开启:
检查CodeIgniter的
index_page配置
本地环境可能保留了index.php在URL里,但线上要配合.htaccess去掉它,所以需要修改application/config/config.php:// 把原来可能存在的'index.php'改成空字符串 $config['index_page'] = '';确保.htaccess的位置和Apache的
AllowOverride设置正确- .htaccess文件必须放在项目的根目录(也就是和
index.php、application文件夹同层级的位置),不能放到application或者system目录里。 - 关键!要修改Apache的配置,让服务器允许读取.htaccess的规则。找到你的虚拟主机配置文件(比如
/etc/apache2/sites-available/myweb.conf)或者httpd.conf里的对应目录块,把AllowOverride改成All:
修改后记得重启Apache服务,否则配置不会生效。<Directory /var/www/html/myweb> AllowOverride All Require all granted </Directory>
- .htaccess文件必须放在项目的根目录(也就是和
修正
base_url的小细节
你原来的旧配置里base_url值前面有个空格,新配置要确保没有多余空格,最好在结尾加上斜杠,避免路径拼接出问题:$config['base_url'] = 'http://myweb.com/';检查文件完整性和权限
确认你已经把本地的所有文件完整上传到服务器,特别是根目录的index.php文件存在且权限正确(一般设置为644,文件夹设置为755,确保服务器的www-data用户能读取文件)。
排查完这些点,应该就能解决404的问题了。
内容的提问来源于stack exchange,提问作者Reynaldi Rey
相关产品推荐
相关产品推荐

