在 Laravel 中如何使用路径访问前端资源?

遇到一个问题,在不使用 laravel 的前端工具的情况下,直接使用路径访问前端资源的地址都访问不到,返回 404.

以下是试过的几种方式:

<link rel="stylesheet" href="{{ asset('css/swiper.min.css') }}">
<link rel="stylesheet" href="/resources/assets/css/swiper.min.css">
<script src="{{ resource_path('assets/js/swiper.min.js') }}"></script>
<script src="/../resources/assets/js/jquery.1.7.2.min.js"></script>
<script src="/../resources/assets/js/jquery.img_silder.js"></script>

资源在项目中是一定存在的,以 resources/assets/css 为例:

vagrant@homestead:~/Code/yesonfood$ ll resources/assets/css/
total 40
drwxr-xr-x 1 vagrant vagrant   128 Oct 28 02:59 ./
drwxr-xr-x 1 vagrant vagrant   192 Oct 28 03:10 ../
-rwxrwxrwx 1 vagrant vagrant 17120 Oct 25 01:29 style.css*
-rwxrwxrwx 1 vagrant vagrant 17759 Oct 23 11:11 swiper.min.css*
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 5

resource_path();返回的是绝对路径,也就是file:,而我们访问服务器需要的是http:
建议把前端资源放到 public下或者storage下。

6年前 评论

@施国鹏 谢谢,现在看来应该是 nginx 对于资源的访问路径有问题,因为 laravel 在 nginx 的配置中 root 在 public 目录下面。所以应该是放在 public 下面可以正常引用,但是如果在 storage 下面依旧存在访问的那个问题。

我这边最后的解决方案是资源仍然放在 /resources/assets/ 下。在 nginx 的配置中对访问资源的路由重新指定了一个 root

location ~ ^/assets/ {
    root path/to/project/resources;
}
6年前 评论

@Heroic 官方文档明确有说明,如果是放在storage目录下的资源需要执行php artisan storage:link

6年前 评论

@施国鹏 十分感谢 之前没有细看文档。

6年前 评论

@Heroic 问题解决了就好 :smile:

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!