首页 > 解决方案 > 如何从 Laravel 路由中排除文件夹?

问题描述

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

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

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

任何帮助将不胜感激。

标签: phplaravel.htaccessauthenticationrouting

解决方案


Apacheuploads在 call 之前检查是否是一个文件夹index.php

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

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

我建议您在具有私有访问权限的存储路径中维护您的上传文件夹,并创建如下路径:

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

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


推荐阅读