php - resource - Cómo enrutar a una carpeta estática en Laravel
route view laravel (3)
Tengo una carpeta que he colocado en la carpeta / public en mi sitio de Laravel. El camino es:
/public/test
la carpeta "test" tiene un archivo llamado index.html que es solo un recurso estático que quiero cargar desde la carpeta pública (no quiero crear una vista para esto dentro del marco, demasiado para explicar).
He hecho una ruta como esta:
Route::get(''/test'', function() {
return File::get(public_path() . ''/test/index.html'');
});
No puedo hacer que esto funcione. Acabo de recibir un error de Chrome que dice que esta página tiene un bucle de redireccionamiento.
Puedo acceder de esta manera:
http://www.example.com/test/index.html
Pero no puedo usar la extensión .html en ningún lado. El archivo debe ser visible como:
http://www.example.com/test/
¿Cómo puedo servir una sola página HTML desde la carpeta pública de Laravel sin tener que usar la extensión .html?
Para un archivo estático, creo que estás desperdiciando recursos al servirlo a través de Laravel.
Se han producido algunos errores en el pasado al crear redirecciones infinitas al intentar acceder a archivos / carpetas dentro de las redes public
, pero creo que el último .htaccess que viene con Laravel tiene estos problemas resueltos (en Apache, al menos). Se parece a esto
<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>
Dice ''Si la solicitud no es para una carpeta existente, elimine la barra diagonal final si la hay. Si la solicitud no es para una carpeta existente o para un archivo existente, cargue el index.php de Laravel ''
Luego agregué un archivo .htaccess dentro del subdirectorio para asegurarme de que DirectoryIndex esté configurado para que index.html se cargue de forma predeterminada en una solicitud de un directorio.
Utilizar:
return Redirect::to(''/test/index'');
Ya sea en la función en el archivo de rutas o dentro de un controlador.
solía enfrentar este problema antes, como un pequeño truco sucio, puede cambiar el nombre de la carpeta de prueba a otra cosa y luego actualizar
return File::get(public_path() . ''/to new folder name/index.html'');
La clave no es un conflicto entre su URL de ruta con su carpeta en público.