例如,这是我的文件结构:
因此,当我在网络浏览器中输入 http://127.0.0.1:8000/uploads/documents/solution_12.pdf (1) 时,它工作正常,网络浏览器显示 pdf 文件。但是当我输入 http://127.0.0.1:8000/node_modules/pdfjs-dist/build/pdf.js (2) 时,我收到未找到错误。 那么有人可以向我解释一下 Laravel 中的路径是如何工作的吗?为什么 (1) 链接不包含“公共”路由(upload/documents/solution_12.pdf 存储在公共文件夹内)但它仍然有效?为什么(2)链接返回未找到?
Laravel 从 public/index.php 文件提供整个应用程序,这意味着当您运行
php artisan serve
或在服务器/云上托管时,您必须将域根指向 /public
。因此,服务器可以访问 public
文件夹中的所有文件。如果您希望从 node_modules
访问文件,则必须将文件路径添加到 laravel mix
或 vite
配置中,这样会将它们复制/编译到公共文件夹中。
为了获得最佳实践,文件应上传到
storage
文件夹中,您可以通过执行 public
命令将其符号链接到 php artisan storage:link
文件夹。