应使用 php artisan serve 启动开发服务器并访问 http://127.0.0.1:8000/test,而非含 /public/ 的 URL;Laravel 请求必须经 public/index.php 入口,artisan serve 自动设 public 为文档根,避免 Web 服务器误将 /public/test 当物理路径导致 404。

刚安装完 Laravel 项目,明明在 routes/web.php 里写了 Route::get('/test', function () { return 'ok'; });,浏览器访问 http://localhost/test 却直接报 404,连错误堆栈都没有,根本不知道请求有没有进到 Laravel;这问题不是路由写错了,而是请求压根没走到 Laravel 的入口文件。
确认是否用了正确的访问方式
打开终端,进入 Laravel 项目根目录(即包含 artisan 文件的目录)。
执行:php artisan serve。
看到输出类似 Laravel development server started: http://127.0.0.1:8000 后,立刻用浏览器访问 http://127.0.0.1:8000/test,而不是 http://localhost/your-project/public/test 或其他带 /public/ 的 URL。
这一步必须做——【Laravel 所有请求必须经由 public/index.php 入口处理,而 artisan serve 会自动把 public 设为文档根,跳过所有服务器配置陷阱】。手动拼 /public/ 是初学者最常踩的坑,Web 服务器会把它当物理路径找,不触发路由系统。
检查路由是否真的被加载
在项目根目录运行命令:
php artisan route:list --compact
观察输出中是否有你定义的 /test 行。如果整行缺失,说明路由文件根本没被读取。
此时检查 routes/web.php 是否保存成功、有无语法错误(比如漏了分号、括号不闭合),尤其注意 PHP 8.5+ 对返回类型和严格模式更敏感;另确认该文件顶部没有意外注释掉 <?php 开头。
清除缓存并重启服务
第一步:清空所有缓存
php artisan optimize:clear
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
第二步:停止当前 php artisan serve 进程(按 Ctrl+C)。
第三步:重新启动开发服务器
php artisan serve
这三步缺一不可——【optimize:clear 不仅清路由缓存,还清配置、视图、普通缓存;而 artisan serve 不会自动重载代码,必须重启才生效】。开发阶段不要用 route:cache,它只适合生产环境且会锁死路由变更。
验证服务器配置(仅部署时需要)
方法一:Apache 配置检查
确保虚拟主机的 DocumentRoot 指向项目 public 目录(例如 /var/www/html/myapp/public),而非项目根目录。
确认 .htaccess 文件存在于 public 目录下,且 Apache 已启用 mod_rewrite 并设置 AllowOverride All。
方法二:Nginx 配置检查
在 server 块中,确认 root 指令指向 public 目录,并包含标准 try_files 指令:
try_files $uri $uri/ /index.php?$query_string;
改完配置后必须执行 sudo nginx -t && sudo systemctl reload nginx 生效,否则修改无效。


















