У меня есть папка, которую я разместил в папке / 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?
прежде чем сталкиваться с этой проблемой, как грязный маленький трюк, вы можете переименовать тестовую папку в другое, а затем обновить
return File::get(public_path() . '/to new folder name/index.html');
ключ не является конфликтом между вашим URL-адресом маршрута с вашей папкой публично
Использование:
return Redirect::to('/test/index');
Либо в функции в вашем файле маршрутов, либо внутри контроллера.
Для статического файла, я думаю, вы тратите ресурсы, обслуживающие его через 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>
В нем говорится: «Если запрос не для существующей папки, разделите конечную косую черту, если она есть. Если запрос не для существующей папки или для существующего файла, загрузите index.php 'Laravel'
Затем я добавил файл .htaccess в подкаталог, чтобы убедиться, что DirectoryIndex установлен так, чтобы index.html загружался по умолчанию в запросе для каталога.