【发布时间】:2023-03-15 04:04:01
【问题描述】:
我没有默认设置vue + laravel,vue完全独立于laravel。
在我的情况下,laravel 仅作为 API。我完成了一个 vue 应用程序,并为生产执行了 build 命令。
我以这种形式获得了生成的资源:
我正在考虑如何将这样的应用程序上传到托管,得出的结论是我需要通过我的 laravel 服务器发送 vue 文件。
我在routes/web.php中写了路由:
Route::get('{uri}', function ($uri = '/') {
$sourceByUri = public_path('_frontend/' . $uri);
if (is_file($sourceByUri)) {
return file_get_contents($sourceByUri);
}
$indexSpa = public_path('/_frontend/index.html');
return file_get_contents($indexSpa);
})->where('uri', '.*');
我的 api 正常工作,但文件夹 _frontend 中的文件未正确发送(css 不适用)。 Screenshot
应该是这样的:Screenshot
原来服务器的所有响应都值得Content-Type: text/html
如何通过服务器正确打开我的应用程序?
【问题讨论】:
-
您的 css 和 js 文件需要可从同一路径访问。我假设您在 index.html 中引用它们时没有为 _frontend 添加前缀。
-
所有文件都带有代码 200,并且脚本可以工作,问题是无处不在
Content-Type: text/html,我尝试将Content-Type更改为text/css并且一切正常,但同时所有带有text/css(html, css, other files)的回复。 Screenshot -
我尝试获取 mime 类型:
mime_content_type($sourceByUri),但对于 css 和 js,它返回text/plain -
啊,我刚刚注意到您的代码尝试提供所有文件,而不仅仅是 index.html。这可能是个坏主意,通过 php/laravel 提供文件比通过 Web 服务器提供文件要慢得多。