Heroku部署PHP MVC项目仅首页可访问,其他路由报404求助
解决Heroku部署PHP MVC项目路由404问题
问题根源
Heroku上的Apache服务器默认会直接寻找请求路径对应的文件(比如/about会查找public/about文件),不会自动将所有请求转发到你的入口文件public/index.php,这就导致除首页外的所有路由触发404错误。
解决方案步骤
1. 确认项目结构与Procfile配置
你的路由逻辑所在的入口文件(比如index.php)必须放在public/目录下,同时Procfile要明确指定public/作为服务器的文档根目录:
web: heroku-php-apache2 public/
2. 添加public/.htaccess重写规则
在public目录下创建.htaccess文件,写入以下URL重写规则,让所有非真实文件/目录的请求都转发到入口文件:
RewriteEngine On # 排除实际存在的文件 RewriteCond %{REQUEST_FILENAME} !-f # 排除实际存在的目录 RewriteCond %{REQUEST_FILENAME} !-d # 将所有请求转发到index.php处理 RewriteRule ^ index.php [L]
3. 提交代码并重新部署
将.htaccess文件加入Git仓库,重新推送到Heroku完成部署:
git add public/.htaccess git commit -m "Add URL rewrite config for Heroku" git push heroku main
验证
部署完成后,尝试访问/about、/contacts等路由,此时请求会被正确转发到index.php,你的路由逻辑就能正常处理对应页面了。
内容的提问来源于stack exchange,提问作者Alexis Boucherie
相关产品推荐
相关产品推荐

