答案是启用 apache 的 mod_rewrite 模块,执行 sudo a2enmod rewrite && sudo systemctl restart apache2;根本原因是该模块未启用导致重写规则失效,静态资源请求无法映射到 public/ 目录而返回 404。

当你在 Laravel 项目中修改了 CSS 文件内容,刷新页面却看不到样式变化,既不是单纯路径写错,也不是单纯缓存没清——而是 Apache 的 mod_rewrite 模块未启用,导致所有静态资源请求(如 /css/app.css)根本没走到 public/ 目录下对应文件,浏览器直接收到 404,连“路径对不对”都无从判断;同时路由也失效,/login 变成 404,只能靠 /index.php/login 强行访问,但此时 CSS 依然加载不了。
先确认是不是 mod_rewrite 没开
执行命令检查 rewrite 模块状态:
sudo a2stat | grep rewrite
如果输出为空或显示 status: disabled → 说明模块确实未启用,【这是 95% 的 Laravel Apache 部署中 CSS 不生效的真正起点】。
启用它:
sudo a2enmod rewrite && sudo systemctl restart apache2
重启后立刻测试:访问 http://your-domain/css/app.css(不带 index.php),应返回 CSS 内容而非 404。若仍 404,说明问题卡在这一步,不用往下查缓存或路径。
路径写法必须用 asset() 函数
Blade 模板里不要写相对路径:
这种写法在子路由(如 /admin/users)下会变成请求 /admin/css/app.css,必然 404。
改成:
asset() 生成的是以应用根 URL(APP_URL)为前缀的绝对路径,比如 http://localhost/css/app.css,始终从 public/ 下找文件。
注意:asset() 中的路径是相对于 public/ 的,不是相对于 resources/views/,所以写 'css/app.css' 就对了,不要加 ../ 或 /public/。
清除 Laravel 缓存(仅当 rewrite 已启用且路径正确后才需操作)
第一步:清空所有缓存
php artisan optimize:clear
这会依次执行 config:clear、cache:clear、route:clear、view:clear,覆盖开发中常见缓存干扰点。
第二步:强制重编译视图(尤其当你改了 Blade 中的 asset() 调用)
php artisan view:cache
第三步:停止并重启内置服务器(如果你正在用 php artisan serve)
Ctrl + C → 再运行 php artisan serve
⚠️ 提示:Apache 环境下无需重启 Apache,但必须确保 DocumentRoot 指向的是 project/public/,而不是 project/ 或 project/public/index.php。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











