Laravel中定义的/about GET路由访问返回404页面是什么原因?
Laravel新增/about路由返回404问题排查方案
以下是按出现概率从高到低排列的故障原因和解决方法:
- 访问地址填写错误
你当前项目的公开根路径是http://localhost/ecommerce/public/,对应about路由的正确访问地址是http://localhost/ecommerce/public/about,如果直接访问http://localhost/about会直接触发Web服务器的404。 - 伪静态配置未生效
Laravel的路由功能依赖URL重写隐藏入口文件index.php,你可以先尝试访问http://localhost/ecommerce/public/index.php/about测试:- 如果该地址可以正常打开,说明是伪静态配置问题:
- Apache环境:确认
public目录下存在默认的.htaccess文件,Apache已开启mod_rewrite模块,且站点配置中AllowOverride参数设置为All - Nginx环境:在站点配置中添加Laravel官方重写规则,将所有非静态资源请求指向
index.php入口文件
- Apache环境:确认
- 如果该地址可以正常打开,说明是伪静态配置问题:
- 路由缓存未更新
如果之前执行过路由缓存命令,新增的路由不会自动加载,执行以下命令清除缓存即可:php artisan route:clear
本地开发环境不建议开启路由缓存,会频繁出现新增路由不生效的问题。 - 路由顺序冲突
检查routes/web.php中路由的排列顺序,如果/about路由写在Route::get('/{param}', ...)这类动态参数路由之后,会被动态路由优先匹配,导致固定路由不生效,固定路由需要放在动态参数路由的前面。 - 路由文件未被正确加载
确认你编写的路由代码是写在routes/web.php文件中,Laravel默认只会加载该目录下的指定路由文件,如果写在其他自定义路由文件中,需要手动在路由服务提供者中注册才能生效。
内容的提问来源于stack exchange,提问作者Ali Ahmad
相关产品推荐
相关产品推荐

