Как исключить папку из маршрута Laravel? - PullRequest
0 голосов
/ 02 мая 2018

Я сейчас работаю над проектом Laravel 5.6. Здесь я загрузил и распаковал zip-файл в директорию public / uploads / games (извлеченные файлы содержат файлы html, css, js). Теперь я хочу предоставить доступ к этой папке только аутентифицированному пользователю. Итак, я включил маршрут в route / web.php. Вот мой маршрут:

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

Но, поскольку у меня есть папка с именем «uploads», эта маршрутизация не работает. Мне нужен этот маршрут для проверки подлинности. Я реализую промежуточное ПО позже.

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Пожалуйста, проверьте, загрузили ли вы файл .htaccess и включено ли правило перезаписи. Если он работает, он должен игнорировать все файлы и каталоги, ожидающие вашего файла index.php. Я уверен, что он не работает должным образом.

0 голосов
/ 02 мая 2018

Apache проверяет, является ли uploads папкой перед вызовом index.php.

Вы можете удалить RewriteCond %{REQUEST_FILENAME} !-d из файла .htaccess, но это не лучшее решение.

Для защиты общей папки или публичного файла вам необходимо использовать веб-сервер, но он более сложный.

Я предлагаю вам сохранить папку загрузок в пути хранения с личным доступом и создать маршрут, подобный следующему:

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

Эта реализация является базовой, но может помочь вам решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...