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

Laravel站点仅/blog路由返回Nginx 403错误其余路由正常如何排查

排查解决步骤

1. 优先排查public目录下的同名静态资源

这是该场景下最高发的原因:Nginx默认会优先匹配服务器上实际存在的文件/目录,请求根本不会转发到Laravel路由处理。

  • 登录服务器进入站点根目录,执行命令ls -la public/检查是否存在名为blog的文件或目录
  • 如果存在同名资源,直接删除或重命名即可解决;若需要保留该目录,参考下一步修改Nginx配置

2. 校验Nginx配置规则

Forge生成的默认配置一般不会有问题,但特殊场景下可能存在规则优先级问题:

  • 在Forge站点管理页找到「Nginx配置」入口,检查是否存在针对/blog路径的自定义location规则,这类规则会优先于Laravel的全局路由转发规则
  • 确认Laravel默认的try_files规则,默认规则为:
    try_files $uri $uri/ /index.php?$query_string;
    
    其中$uri/会匹配真实存在的目录,如果你需要保留public/blog目录,可将规则修改为:
    try_files $uri /index.php?$query_string;
    
  • 配置修改后执行sudo nginx -s reload重载配置生效

3. 查看Nginx错误日志定位根因

如果上述两步未解决,直接查错误日志确认具体原因:

  • 可直接在Forge站点管理页的「日志」标签查看Nginx错误日志,或登录服务器查看日志文件/var/log/nginx/{你的站点域名}-error.log
  • 日志会明确标注403错误是因为目录权限不足、索引被禁止还是规则匹配问题,可针对性处理

4. 排查Laravel应用层面逻辑

如果日志显示请求已经转发到Laravel处理,则排查应用侧逻辑:

  • 检查BlogController的index方法是否有权限校验逻辑,存在abort(403)的返回分支
  • 检查/blog路由是否绑定了权限校验类中间件,未登录或无权限用户访问会返回403

5. 校验Envoyer部署逻辑

检查Envoyer的部署钩子脚本,是否存在自动生成静态资源到public/blog路径的逻辑,导致部署后生成同名目录覆盖路由。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:00:00