Laravel静态文件全部404问题求助(PHP7.2+Laravel6.0.4)
我之前在Laravel 6.x环境下碰到过一模一样的问题,结合PHP 7.2的适配性,给你梳理几个实用的排查和解决步骤:
确认静态文件的存放路径
Laravel默认要求静态资源(css/js)放在public目录下,比如public/css/app.css、public/js/app.js。先检查这些文件是否真实存在,路径有没有拼写错误——尤其是Linux环境下要注意大小写区分,别把CSS写成css导致找不到文件。使用Laravel官方辅助函数引用资源
模板里千万别写相对路径(比如../css/app.css),容易被路由规则干扰。推荐用asset()或mix()辅助函数生成正确的URL:<!-- 普通静态文件用asset --> <link href="{{ asset('css/app.css') }}" rel="stylesheet"> <!-- 用Laravel Mix编译的资源用mix --> <script src="{{ mix('js/app.js') }}"></script>重新编译Laravel Mix资源
如果是用Mix管理前端资源,先确保已经安装依赖并完成编译:npm install npm run dev # 开发环境编译,带源码映射 # 或者生产环境编译:npm run prod没执行编译的话,
public目录下不会生成最终的css/js文件,自然会返回404。检查目录权限
给public目录及其子目录设置正确的读写权限,确保web服务进程能读取静态文件:chmod -R 755 public/ # 根据你的服务器用户调整,比如apache用www-data,nginx用nginx chown -R www-data:www-data public/排查路由冲突
检查routes/web.php里有没有定义和静态文件路径冲突的路由,比如Route::get('/css/{filename}', ...)这类规则会直接拦截静态文件请求,导致返回404。如果有这类路由,要么修改路由规则,要么调整静态文件的存放路径。清除Laravel缓存
缓存异常也可能导致资源路径解析错误,执行以下命令清空缓存:php artisan cache:clear php artisan config:clear php artisan route:clear验证php artisan serve的访问路径
用php artisan serve启动后,默认访问地址是http://127.0.0.1:8000,直接在浏览器地址栏输入静态文件的完整URL(比如http://127.0.0.1:8000/css/app.css)测试,如果还是404,说明文件确实不存在或者路径有问题,回到第一步重新检查。
内容的提问来源于stack exchange,提问作者phpero1234

