
usuario1537360
Sé que esta es una pregunta muy popular, pero no he podido encontrar una solución que funcione para Laravel 5. He intentado migrar desde Codeigniter durante mucho tiempo, pero este enrevesado proceso de instalación me sigue desanimando.
No quiero ejecutar una máquina virtual, esto parece incómodo al cambiar de proyecto.
No quiero configurar la raíz de mi documento en la carpeta pública, esto también es incómodo al cambiar de proyecto.
Probé el método .htaccess mod_rewrite
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Esto solo me da una Laravel NotFoundHttpException en la línea 7610 de compiled.php.
Cuando probé L4 hace un tiempo, usé el método de mover el contenido de la carpeta pública a la raíz. La estructura de L5 es bastante diferente y siguiendo los mismos pasos rompió completamente Laravel (el servidor solo devolvería una página en blanco).
¿Existe un método decente para eliminar ‘público’ en un entorno de desarrollo que:
- Funciona con L5
- Me permite cambiar entre proyectos con facilidad (normalmente estoy trabajando en 2 o 3 a la vez).
Gracias
** Estoy usando MAMP y PHP 5.6.2

Derk Jan Speelman
TENGA EN CUENTA al servir un proyecto de Laravel con Docker: no necesitará hacer nada de esto. Usa solo esta opción cuando su raíz (o más comúnmente: public_html
) de su sitio web es su proyecto Laravel (este no es el caso cuando está usando Docker).
¡NO!
REALMENTE NO DEBES rebautizar server.php
en su carpeta raíz de Laravel para index.php
y copiar el .htaccess
archivo de la /public
directorio a su carpeta raíz de Laravel !!!
De esta manera, todos pueden acceder a algunos de sus archivos (.env
por ejemplo). Inténtalo tú mismo. ¡No quieres eso!
HACER
En su lugar, debe crear un .htaccess
archivo en su raíz como este:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L,QSA]
Esto reescribirá silenciosamente todos sus URI base en el /public
carpeta. Incluso todos Encabezadospor ejemplo el encabezado de autorización HTTPy todos los parámetros de URI opcionales se pasarán silenciosamente al /public
carpeta también.
Eso es todo
En Laravel 5.5, cree el archivo .htacess en su directorio raíz y coloque el siguiente código: Link de referencia
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]
RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php
</IfModule>

Pallav Nagar
Crear .htaccess
presentar en raíz directorio y coloque el código algo como a continuación.
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]
RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php
</IfModule>
Manera fácil de eliminar público de laravel 5 url. Solo necesita cortar index.php y .htaccess del directorio público y pegarlo en el directorio raíz, eso es todo y reemplazar dos líneas en index.php como
require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
Nota: El método anterior es solo para los principiantes, ya que podrían tener problemas para configurar el host virtual y la mejor solución es configurar el host virtual en la máquina local y señalarlo al directorio público del proyecto.
@rimon.ekjon dijo:
Cambie el nombre de server.php en su carpeta raíz de Laravel a index.php y copie el archivo .htaccess del directorio /public a su carpeta raíz de Laravel. — Eso es todo !! 🙂
Eso está funcionando para mí. Pero todos los archivos de recursos en el directorio /public no se pudieron encontrar y las URL de solicitud no funcionaron, porque usé el asistente de activos().
Cambié la función /Illuminate/Foundation/helpers.php/asset() de la siguiente manera:
function asset($path, $secure = null)
{
return app('url')->asset("public/".$path, $secure);
}
Ahora todo funciona 🙂
Gracias @rimon.ekjon y a todos ustedes.
Actualización del autor 2020
Esta respuesta no es recomendable. En cambio, el manejo .htaccess
Se recomienda el archivo.
La estructura de carpetas en la guía es diferente a la mía, me imagino que no está usando L5. Omití los cambios que hizo en el archivo Bootstrap/Paths, porque no existe. Sin embargo, el proyecto parece estar funcionando. ¿Crees que esto está bien?
– usuario1537360
6 de febrero de 2015 a las 11:37
mi error déjame agregar respuesta para L5
– kamlesh.bar
6 de febrero de 2015 a las 11:41
sin éxito tratando de lo mismo
– kamlesh.bar
6 de febrero de 2015 a las 12:06
Parece funcionar simplemente modificando las rutas en el archivo index.php, pero soy nuevo en Laravel, así que obviamente no puedo comentar si esto es estable/seguro.
– usuario1537360
6 de febrero de 2015 a las 13:06
Se supone que las otras carpetas/archivos están debajo de la raíz de su documento.
– Mike Rockett
7 febrero 2015 a las 18:04