我有一个文件夹,我已放在Laravel网站的/ public文件夹中。路径是:
/public/test
"测试"文件夹有一个名为index.html的文件,它只是我想从公共文件夹加载的静态资源(我不想在框架内为此创建一个视图 - 太多无法解释)。
我做了这样的路线:
Route::get('/test', function() {
return File::get(public_path() . '/test/index.html');
});
我无法让它发挥作用。我刚收到Chrome的错误,说此页面有重定向循环。
我可以这样访问它:
http://www.example.com/test/index.html
但我无法在任何地方使用.html扩展程序。该文件必须显示为:
http://www.example.com/test/
如何在不使用.html扩展名的情况下从Laravel公用文件夹提供单个HTML页面?
答案 0 :(得分:20)
之前用来面对这个问题,作为一个肮脏的小技巧,您可以将测试文件夹重命名为其他内容然后更新
return File::get(public_path() . '/to new folder name/index.html');
关键是您的路线网址与公共文件夹
之间没有冲突答案 1 :(得分:4)
对于静态文件,我认为你浪费资源通过Laravel服务。
在尝试访问public
中的文件/文件夹时,过去有一些错误创建无限重定向,但我认为Laravel附带的最新.htaccess已解决(至少在Apache上)。看起来像这样
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
它说'如果请求不适用于现有文件夹,请删除尾随斜杠(如果有)。如果请求不是针对现有文件夹或现有文件,请加载Laravel的index.php'
然后我在子目录中添加了一个.htaccess文件,以确保设置DirectoryIndex,以便默认情况下在目录请求中加载index.html。
答案 2 :(得分:2)
使用:
return Redirect::to('/test/index');
在路线文件的功能处或控制器内部。