如何路由到Laravel中的静态文件夹

时间:2015-03-23 18:41:18

标签: php laravel laravel-routing

我有一个文件夹,我已放在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页面?

3 个答案:

答案 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');

在路线文件的功能处或控制器内部。