.htaccess laravel 9不加载css & js,但加载图像

sigwle7e  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(127)

我最近上传了我的Laravel项目到一个主机。问题是我在public/images文件夹中的图像加载正确,但我在public/build/assets文件夹中的js和css文件找不到。我真的很困惑,下面的行

@vite(['resources/css/app.css', 'resources/js/app.js'])

将在视图中生成这些线:

<link rel="preload" as="style" href="https://sample.com/build/assets/app-174f79b2.css">
<link rel="modulepreload" href="https://sample.com/build/assets/app-02908d50.js">
<link rel="stylesheet" href="https://sample.com/build/assets/app-174f79b2.css">
<script type="module" src="https://sample.com/build/assets/app-02908d50.js"></script>

但是当我把链接复制到浏览器上,并且在build之前添加public时,它们就在那里了。我认为是.htaccess文件有问题,但是我的公共文件夹中的index.php没有这个问题,它工作正常。公共文件夹下的我的图像文件夹也工作正常,我的图像被正确加载。
下面是我的.htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^public/
    RewriteRule ^(.*)$ public/$1 [L,QSA]
</IfModule>

更奇怪的是我的public/images文件夹中的.svg文件也有加载问题,但是.webp文件没有问题!

a0zr77ik

a0zr77ik1#

如文件所述
有两种方法可以运行Vite。您可以通过dev命令运行开发服务器,这在本地开发时很有用。开发服务器会自动检测文件的更改,并立即反映在任何打开的浏览器窗口中。
或者,运行build命令将对应用程序的资产进行版本控制和捆绑,并使它们准备好部署到生产环境中

所以...

在开发模式下,Laravel Vite不会构建资源并将其发布到您的公用文件夹!它会打开另一个端口并自行提供这些资源。

npm run dev

如果要发布资源,应针对生产运行:

npm run build

在文档根不是公共的情况下访问laravel

您应该将Documentroot设置为public目录。
但是如果你不想在.htaccess中的laravel根目录下,也就是你的文档根目录下这样写:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /public/index.php$1 [L]

相关问题