Как перейти на статическую папку в 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 будет загружен по умолчанию при запросе каталога.