直接从公共文件夹加载 HTML 文件作为 Laravel 中的视图
Posted
技术标签:
【中文标题】直接从公共文件夹加载 HTML 文件作为 Laravel 中的视图【英文标题】:Load an HTML file directly from public folder as View in Laravel 【发布时间】:2015-10-30 01:20:03 【问题描述】:我正在使用 Laravel。 我正在尝试整理我自己的结婚请柬。 我的公用文件夹中有一个文件夹,将样式和脚本用于它。
我想知道我是否可以指向该文件夹,而不是将所有内容复制并粘贴到新的刀片文件中。
路线
Route::get('/wedding', 'WeddingController@index');
婚礼主持
<?php namespace App\Http\Controllers;
class WeddingController extends Controller
public function index()
return view('wedding.index');
问题
我想知道是否可以将我的索引函数指向我的 /public 文件夹中的一个文件夹中的index.html
。
我们是否必须从app/resources/views
目录加载.blade
文件?
对此的任何帮助/建议将不胜感激。
【问题讨论】:
如果有一个文件位于public/wedding/index.html
,那么当你转到http://localhost/wedding
时,它将显示index.html
的内容,而无需调用 Laravel。不需要路由或控制器。
【参考方案1】:
只需将婚礼文件夹直接放在公用文件夹中即可:
mv wedding/ /path/to/laravel/public
然后访问带有婚礼后缀的网站网址:
http://my-site.com/wedding
这将从婚礼文件夹中加载index.html
。
这通过 nginx 的 try_files
指令在您的 /etc/nginx/sites-enabled/my-site
配置文件中工作:
location /
try_files $uri $uri/ /index.php?$query_string;
这指示 Nginx 首先搜索与 URL 对应的实际文件(例如,/css/app.css
、/wedding/index.html
等)。如果它没有找到匹配的文件(例如,它通常会返回 404 not found),那么它应该将查询字符串作为参数传递给 index.php 脚本。
【讨论】:
我怎么不用注册那条路线?你能详细说明一下吗? 我真的很喜欢这个解决方案。我不敢相信我做得比现在更难。 我看到了。非常感谢你做的这些。我会确保很快接受它。 我注意到,这在本地不起作用。只在服务器上工作。你知道为什么吗? 你是在本地使用 Nginx 还是其他的东西?【参考方案2】:使用File
Facade 从控制器加载静态文件
use File;
return File::get(public_path() . '/to new folder name/index.html');
【讨论】:
这不是我要问的。 我知道如何加载文件。这很容易。 对于 laravel 5.6use Illuminate\Support\Facades\File;
.【参考方案3】:
一种解决方案是将您的婚礼请柬的 index.html
重命名为 index.php
并将其放在您的 resources/views
文件夹中,以便它成为 Laravel 模板。
cd path/to/laravel
mkdir resources/views/wedding
mv public/wedding/index.html resources/views/wedding/index.php
然后您可以根据需要从控制器中调用它:
public function index()
return view('wedding.index');
当然,使用此方法,您必须确保所有 CSS/javascript/图像 url 都正确映射到 public/
文件夹中它们各自的位置。
【讨论】:
此解决方案仅在您重命名index.html
时有效--> index.blade.php
以上是关于直接从公共文件夹加载 HTML 文件作为 Laravel 中的视图的主要内容,如果未能解决你的问题,请参考以下文章
403 从公共/图像文件夹 laravel vuejs xampp 加载图像时禁止
是否可以直接从 html img 标签 src 向服务器请求文件并使用 jwt 身份验证标头加载它?