MAMP虚拟主机部署CodeIgniter项目遇404错误求助
解决CodeIgniter虚拟主机访问404错误的问题
你已经把基础的虚拟主机配置步骤都走完了,但还是遇到了404,我来帮你排查几个容易忽略的关键点:
1. 确认DocumentRoot指向正确的目录
如果你的CodeIgniter是4.x版本,项目根目录下有个public文件夹,这才是Web服务器应该指向的入口目录(因为index.php在这里)。你当前的DocumentRoot设为项目根目录,会导致服务器找不到入口文件,自然返回404。修改httpd-vhosts.conf的配置:
<VirtualHost *:80> DocumentRoot "/Applications/MAMP/htdocs/my-project/public" ServerName my-project.local # 添加Directory配置确保权限正确 <Directory "/Applications/MAMP/htdocs/my-project/public"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
如果是CodeIgniter 3.x,index.php在项目根目录,那DocumentRoot没问题,但同样需要在VirtualHost里添加对应的Directory配置,确保服务器有权访问该目录。
2. 检查.htaccess文件的正确性
不同版本的CI,.htaccess规则不一样:
- CI4的public目录下的.htaccess(如果没有就创建):
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
- CI3的根目录下的.htaccess:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
另外要确认httpd.conf里已启用rewrite模块,检查LoadModule rewrite_module modules/mod_rewrite.so这一行是否取消了注释。
3. 验证端口与hosts配置是否生效
- 打开终端输入
ping my-project.local,如果返回IP是127.0.0.1,说明hosts配置生效;如果不是,检查hosts文件的拼写和格式,确保没有多余空格。 - 检查MAMP端口:打开MAMP偏好设置确认Apache端口为80,重启后在终端输入
lsof -i :80,查看是否有httpd进程占用端口。如果没有,可能是macOS自带的Apache占用了80端口,先执行sudo apachectl stop停止自带服务,再重启MAMP。
4. 同步CodeIgniter配置文件
打开CI的配置文件:
- CI4:
app/Config/App.php,设置baseURL为http://my-project.local/ - CI3:
application/config/config.php,设置$config['base_url']为http://my-project.local/
完成以上步骤后重启MAMP的Apache服务,再访问my-project.local应该就能正常加载了。
内容的提问来源于stack exchange,提问作者Otman
相关产品推荐
相关产品推荐

