Laravel在Laragon中路由404的根源是请求未进入public/index.php入口,需将网站根目录设为public子目录,并在Nginx中配置try_files $uri $uri/ /index.php?$query_string;Apache则需确保.htaccess存在且AllowOverride All生效。

在Laragon中运行Laravel项目时出现路由404,几乎可以确定是伪静态没配对——不是代码写错了,而是请求根本没进到public/index.php这个统一入口。
根目录必须指向 public 子目录
Laragon默认新建站点时,会把网站根目录设为项目整体(比如 D:\laragon\www\myapp),但Laravel的合法Web入口只在public/目录下。如果没改,.env、routes/、app/ 全部暴露在外,且index.php无法被正确加载,直接报404或下载PHP源码。
- 打开Laragon → 右键你的站点 → 「Edit Site」→ 修改「Document Root」为
D:\laragon\www\myapp\public - 不要填成
D:\laragon\www\myapp\public\index.php(这是文件路径,不是目录) - 保存后点击「Restart Apache/Nginx」,不重启配置不会生效
- 验证:访问
http://myapp.test/.env应返回403或404;访问http://myapp.test应显示Laravel欢迎页
Nginx环境用 try_files 规则(推荐)
如果你用的是Laragon的Nginx模式(默认启用),必须手动添加标准伪静态规则。它不自动识别Laravel,也不会从.htaccess读取规则。
当代理已经知道网站路由或内容URL,并且在启动前需要有效的sitemap XML、sitemap索引或robots.txt引用时,请使用sitemap。这是一个发布构件技能,而不是爬虫或SEO平台。
- 右键站点 → 「Edit Nginx Conf」→ 找到
location / { }块 - 将其中内容替换为:
try_files $uri $uri/ /index.php?$query_string; - 确保这行在
location ~ \.php$块之前(Nginx按顺序匹配) - 删掉任何
if (!-e $request_filename)或rewrite语句——它们和try_files冲突,且Laravel 9+已弃用PATH_INFO依赖
Apache环境确认 .htaccess 生效
若你切换为Apache(Laragon支持一键切换),需两步同时满足:
- 确保
public/.htaccess文件存在且未被修改(Laravel官方自带,勿删或清空) - 检查Apache配置中对应站点的
<Directory>块是否含AllowOverride All(不是None) - 常见错误:Laragon的Apache默认可能限制
AllowOverride,需手动编辑D:\laragon\etc\apache2\sites-enabled\your-site.conf补上该指令 - 重启Apache后,访问
http://myapp.test/login应正常进入登录页,而非提示404
别漏掉关键细节
即使伪静态配对了,以下几项出错仍会导致404或白屏:
-
APP_URL 必须与实际域名一致:检查
.env中APP_URL=http://myapp.test(无尾部斜杠),否则生成的URL带index.php,前端跳转异常 -
PHP open_basedir 要清空:Laragon面板 → 站点 → 「PHP Settings」→ 把
open_basedir输入框留空(不是填none),否则storage/和bootstrap/cache/写失败,缓存无法生成,路由注册中断 -
权限要放开:终端进入项目根目录,执行
chmod -R u+rwX storage bootstrap/cache(Windows可用Laragon内置终端,或Git Bash)


















