如何从Laravel路线中排除文件夹?

时间:2018-05-02 19:10:03

标签: php laravel .htaccess authentication routing

我目前正在开发一个laravel 5.6项目。在这里,我已经在' public / uploads / games'中上传并解压缩了zip文件。目录(提取的文件包含html,css,js文件)。现在,我想仅向经过身份验证的用户授予对此文件夹的访问权限。所以,我在routes / web.php中包含了一条路由。这是我的路线:

Route::get('uploads', function() {
    echo 'hello';
});

但是,因为我有一个名为' uploads'的文件夹,所以此路由不起作用。我需要这条路线来检查身份验证。我稍后会实现中间件。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

Apache在调用uploads之前检查index.php是否为文件夹。

您可以从RewriteCond %{REQUEST_FILENAME} !-d文件中删除.htaccess,但这不是更好的解决方案。

为了保护公共文件夹或公共文件,您需要使用Web服务器,但更复杂。

我建议您使用私人访问权限在存储路径中维护您的uploads文件夹,并创建如下路由:

Route::get('uploads/{filename}', function ($filename) {
    return file_get_contents(
        storage_path('some-private-uploads-folder/' . $filename)
    );
});

此实施是基本的,但可以帮助您解决问题。

答案 1 :(得分:0)

请检查您是否已上传.htaccess文件以及是否已启用重写规则。 如果它工作,它应该忽略期望index.php文件的每个文件和目录。 我确定它无法正常工作。