Как перейти на статическую папку в Laravel

У меня есть папка, которую я разместил в папке /public на моем сайте Laravel. Путь:

/public/test

в папке "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?

Ответ 1

используется для решения этой проблемы раньше, как грязный небольшой трюк, вы можете переименовать тестовую папку в другое, а затем обновить

return File::get(public_path() . '/to new folder name/index.html');

ключ не конфликтует между вашим URL-адресом маршрута с вашей папкой публично

Ответ 2

Использование:

return Redirect::to('/test/index');

Либо в функции в файле маршрутов, либо внутри контроллера.

Ответ 3

Для статического файла, я думаю, вы тратите ресурсы, обслуживающие его через Laravel.

В прошлом были некоторые ошибки, создающие бесконечные переадресации при попытке доступа к файлам/папкам в public, но я думаю, что последний .htaccess, который поставляется с Laravel, разрешен (по крайней мере, на 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 будет загружен по умолчанию при запросе каталога.