
laravel 新手常因缓存、语法错误或服务未重启导致自定义路由返回 404,本文详解 `php artisan route:list` 检查、缓存清除及常见陷阱,助你 5 分钟定位并修复路由不显示问题。
在 Laravel 中添加了新路由(如 Route::get('/example', function () { return 'hello'; });),却始终收到 404 响应?这并非“荒谬”的问题——而是新手高频踩坑点。根本原因通常不是路由写错,而是 路由未被框架识别或缓存未更新。
✅ 首先,验证路由是否已被 Laravel 加载:
在项目根目录运行以下命令:
php artisan route:list
该命令会列出所有已注册的 HTTP 路由。若 /example 未出现在输出列表中,说明 Laravel 根本没读取到你的修改——此时请重点检查以下三点:
-
PHP 语法错误:你代码中使用了大写的 Return 和 view(如 Return ('hello'); 或 Return view ('welcome');),PHP 是大小写敏感的,正确写法必须是小写的 return:
// ✅ 正确(routes/web.php) Route::get('/example', function () { return 'hello'; // 注意:return 小写,无括号非必需(但推荐保留) }); Route::get('/', function () { return view('welcome'); // 同样,return 小写 }); -
配置/路由缓存未清除:Laravel 在开发环境虽默认不启用路由缓存,但某些情况下(如执行过 php artisan optimize 或升级后)可能残留旧缓存。运行以下命令彻底清空所有缓存:
php artisan config:clear php artisan cache:clear php artisan route:clear php artisan view:clear # Laravel 8+ 推荐使用统一命令(兼容性更好): php artisan optimize:clear
-
php artisan serve 未重启:php artisan serve 启动的是一个独立 PHP 内置服务器,它不会自动热重载路由文件。每次修改 routes/web.php 后,务必先按 Ctrl + C 停止当前服务,再重新运行:
php artisan serve
? 额外提示:
- 确保访问的是 http://127.0.0.1:8000/example(而非 localhost:8000/example,部分 Windows 8.1 环境 DNS 解析异常可能导致后者失败);
- 检查 .env 文件中 APP_URL 设置是否影响中间件行为(一般不影响基础路由);
- 若使用 Apache/Nginx,请确认已正确配置 public/.htaccess 或服务器重写规则(但 php artisan serve 无需此步骤)。
✅ 最终验证流程:
- 修正 return 大小写 → 保存文件;
- 运行 php artisan optimize:clear;
- Ctrl + C 停止服务 → php artisan serve 重启;
- 访问 http://127.0.0.1:8000/example,应立即看到 hello。
记住:在 Laravel 开发中,“改完就刷新”不等于“改完就生效”——缓存、语法、服务生命周期三者缺一不可。养成 route:list + optimize:clear + 重启服务的黄金三步习惯,将大幅减少 404 困扰。











