Laravel路由缓存未清除会导致404,需运行php artisan optimize:clear(Laravel 8+)或分步执行route:clear、config:clear、view:clear、cache:clear(旧版本),并重启php artisan serve。

是的,Laravel 路由缓存确实会导致 404 ——你改了 routes/web.php,但浏览器访问新路径仍报错,php artisan serve 重启也没用,大概率就是路由缓存没清干净。
确认路由是否真的注册了
别猜,直接查。运行命令:
php artisan route:list --compact
看输出里有没有你刚加的那条路由(比如 GET | /dashboard)。如果压根没出现,说明 Laravel 根本没读到你的修改——不是代码写错了,而是缓存挡路了。
注意:这个命令只显示当前生效的路由,不查缓存文件,结果最直观可靠。
一键清空所有相关缓存(推荐 Laravel 8+)
别再单敲 cache:clear 或 config:clear,它们都不动路由缓存。正确做法是:
php artisan optimize:clear
这条命令会同时清除:
- 路由缓存(routes-v7.php 等)
- 配置缓存(config.php)
- 视图缓存(compiled.php)
- 普通应用缓存(cache 目录)
执行后看到 Route cache cleared! 才算成功。
旧版本(Laravel 7 及以下)要分步清理
如果没有 optimize:clear 命令,按顺序执行这四条:
- php artisan route:clear
- php artisan config:clear
- php artisan view:clear
- php artisan cache:clear
每一步都建议检查终端输出,确保没有报错,且明确提示“cleared”。
清完必须重启服务,别跳过
缓存清了,但 php artisan serve 进程还在用旧内存映射。必须:
先按 Ctrl + C 停掉当前服务,再重新运行 php artisan serve。
否则你看到的还是旧行为,白清一次。
另外两个容易漏掉的点:Web 服务器伪静态规则是否匹配、PHP OPcache 是否重启——如果清完缓存还 404,就该往那边看了。



















