Sé que esta es una pregunta muy popular, pero no he podido encontrar una solución que funcione para Laravel 5. He estado tratando de migrar desde Codeigniter durante mucho tiempo, pero este complicado proceso de instalación me desanima.
No quiero ejecutar una VM, esto simplemente parece incómodo al cambiar de proyecto.
No quiero establecer la raíz de mi documento en la carpeta pública, esto también es incómodo al cambiar de proyecto.
He probado 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 compiled.php 7610.
Cuando probé L4 hace un tiempo, utilicé el método de mover el contenido de la carpeta pública a la raíz. La estructura de L5 es bastante diferente y seguir 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 (generalmente estoy trabajando en 2 o 3 en cualquier momento).
Gracias
** Estoy usando MAMP y PHP 5.6.2
Respuestas:
Para Laravel 5:
server.php
en la carpeta raíz de Laravel aindex.php
.htaccess
archivo del/public
directorio a su carpeta raíz de Laravel.¡Eso es!
fuente
.env
archivo si está haciendo esto a menos que esté de acuerdo con que las personas vean la contraseña de su base de datos en texto claro;)<Files "log.txt">Order Allow,DenyDeny from all</Files>
resuelve el problema que abordó. ¿Es seguro ahora o hay más riesgo?log.txt
. Solo asegúrese de bloquear los datos confidenciales del público. Si usa Laravel y lee la documentación cuidadosamente , su webroot se verá asíproject/public
. Eche un vistazo a esta discusión de stackoverflow qa . Configure su servidor web e intente porhttps://example.com/.env
si acaso. Si ve sus contraseñas, considere todo comprometido y cambie todas las contraseñas.He resuelto el problema usando 2 respuestas:
Cambiando .htaccess un poco de la siguiente manera para las estadísticas:
Si se necesitan otros archivos estáticos, simplemente agregue la extensión a la lista declarada anterior
fuente
RewriteRule ^.env - [F,L,NC]
<Files ~ "\.env$"> Order allow,deny Deny from all </Files>
En Laravel 5.5, cree el archivo .htacess en su directorio raíz y coloque el siguiente código: - Enlace de referencia
fuente
RewriteRule ^ ^$1 [N
] hacer?¡NO!
¡REALMENTE NO DEBE cambiar el nombre
server.php
de su carpeta raíz de Laravelindex.php
y copiar el.htaccess
archivo del/public
directorio a su carpeta raíz de Laravel!De esta manera todo el mundo puede 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:Esto reescribirá silenciosamente todos sus URI base en la
/public
carpeta. Incluso todos los encabezados , por ejemplo el encabezado de autorización HTTP , y todos los parámetros opcionales de URI se pasarán silenciosamente a la/public
carpeta también.Eso es todo
Tenga en cuenta al configurar un proyecto Laravel con Docker: no necesitará hacer esto.
fuente
Manera fácil de eliminar public 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
Nota : El método anterior es solo para los principiantes, ya que pueden 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.
fuente
@ rimon.ekjon dijo:
Eso me funciona. Pero todos los archivos de recursos en el directorio / public no pudieron encontrar y solicitar URL no funcionaron, porque utilicé el asistente de activo ().
Cambié /Illuminate/Foundation/helpers.php/asset () funciona de la siguiente manera:
Ahora todo funciona :)
Gracias @ rimon.ekjon y a todos ustedes.
fuente
RewriteRule ^(.*)$ public/$1 [L]
su archivo .htaccess que ha copiado del directorio público, eliminando esta líneaRewriteRule ^(.*)/$ /$1 [L,R=301]
Simplemente cree el archivo .htaccess en la raíz y agréguele estas líneas
¡Eso es!
El código anterior funciona en la carpeta public_html raíz. Dicho esto, su archivo laravel principal debe estar dentro de la carpeta public_html, si su directorio se ve como public_html / laravelapp / public y si coloca el código anterior dentro de laravelapp, no funcionará. Por lo tanto, debe copiar todos sus archivos principales en public_html y colocar el archivo .htaccess allí.
Si desea mantener el código en un subdirectorio, puede crear un subdominio y este código también funcionará para eso.
fuente
Cree el
.htaccess
archivo en el directorio raíz y coloque el código como se muestra a continuación.fuente
1) No he encontrado un método de trabajo para mover el directorio público en L5 . Si bien puede modificar algunas cosas en el bootstrap
index.php
, parece que varias funciones auxiliares se basan en la suposición de que ese directorio público está allí. Honestamente, realmente no deberías mover el directorio público.2) Si está utilizando MAMP, entonces debería crear nuevos vhosts para cada proyecto, cada uno de los cuales servirá ese directorio público de proyectos. Una vez creado, accede a cada proyecto por su nombre de servidor definido de esta manera:
fuente
Es posible eliminar la URL pública en laravel5. Sigue estos pasos:
Paso 1: copia todos los archivos del público y pégalos en el directorio raíz
paso 2.abrir
index.php
archivo reemplazar cona
y
a
Y elimine todo el caché y las cookies.
fuente
Digamos que colocó todos los demás archivos y directorios en una carpeta llamada 'locale'.
Simplemente vaya a index.php y encuentre estas dos líneas:
y cambiarlos a esto:
fuente
Aquí está la solución mejor y más corta que funciona para mí a partir de mayo de 2018 para Laravel 5.5
simplemente corte su
.htaccess
archivo del directorio / public al directorio raíz y reemplace el contenido con el siguiente código:Sólo tiene que guardar el
.htaccess
archivo y eso es todo.Cambie el nombre de su
server.php
archivo aindex.php
. eso es todo disfrutar!fuente
MEJOR enfoque: no recomendaré eliminar public, en cambio
on local computer create a virtual host point to public directory
yon remote hosting change public to public_html and point your domain to this directory
. Razón, todo su código laravel será seguro porque tiene un nivel inferior a su directorio público :)MÉTODO 1:
Acabo de cambiar el nombre
server.php
deindex.php
y funcionaMÉTODO 2:
Esto funciona bien para todas las versiones de laravel ...
Aquí está mi estructura de directorios,
Sigue estos sencillos pasos
a
y
a
a
y eso es todo, ahora intenta http: // localhost / laravel /
fuente
4 mejores formas de eliminar público de la URL.
Si usó algún otro truco para eliminar el público de la URL, como cambiar el nombre de server.php a index.php y cambiar a la ruta del archivo central. Claramente, no hagas eso. Entonces, ¿por qué Laravel no da la solución como esta porque no es una forma adecuada de hacerlo?
Al agregar un archivo .htaccess a la raíz, puede acceder al sitio web sin público
Estoy dando una demostración aquí para el sistema operativo Windows. Pero intentaré definir un paso para que cualquiera pueda seguirlo fácilmente. También puede buscar en google lo mismo para el sistema operativo en particular.
Paso 1: Vaya a C: \ Windows \ system32 \ drivers \ etc \ abra el archivo "hosts" en modo Administrador.
Paso 2: agregue el siguiente código. Aquí, le doy una demostración de la demostración del nombre de dominio projectname.local, puede especificar cualquiera que desee. Solo hazlo constante en cada lugar.
Paso 3: Ahora vaya a,
C:\xampp\apache\conf\extra
para usuarios de xampp y para el usuario de wamp"C:\wamp\bin\apache\Apache2.4.4\conf\extra"
y abra el"httpd-vhosts.conf"
archivo. Ahora agregue el siguiente código en él.Notas: Cambie la raíz del documento según su proyecto y también agregue el nombre de dominio que defina en el archivo "hosts".
Paso 4: Por último, pero el paso importante es reiniciar su Xampp o Wamp y acceder a la URL como
http://projectname.local
y su Laravel responderá sin URL pública.Si está trabajando en local, entonces no necesita hacer nada, solo necesita ejecutar el siguiente comando desde su terminal o herramienta de línea de comando. Después de eso, puede acceder a su sitio web mediante la URL proporcionada por la línea de comando.
Si está dispuesto a ejecutar su proyecto en una IP particular, entonces necesita ejecutar el siguiente comando. Si está trabajando en LAN, entonces si desea permitir que otras personas accedan a su sitio web desde local, entonces solo necesita verificar su dirección IP usando la línea de comando ejecutando "ipconfig" después de ejecutar su dirección IP siguiendo el comando.
Si está dispuesto a ejecutar su proyecto en una IP particular con un puerto particular, entonces necesita el siguiente comando.
Después de completar el proyecto, debe alojar el proyecto en el servidor, luego solo debe configurar la raíz del documento en su dominio en la carpeta pública. Mira la siguiente captura de pantalla.
Según la captura de pantalla, si no tiene ninguna carpeta de proyecto en public_html, entonces solo necesita configurar la raíz de su documento como
"public_html/public"
.Referencia tomada de aquí
fuente
Me gustaría agregar a @Humble Learner y tener en cuenta que la ubicación adecuada para "arreglar" la ruta de URL de los activos es /Illuminate/Routing/UrlGenerator.php/asset ().
Actualice el método para que coincida:
Esto arreglará scripts, estilos y rutas de imágenes. Cualquier cosa por rutas de activos.
fuente
Para que el usuario de XAMPP elimine el público de la url sin tocar el sistema de archivos predeterminado laravel, debe configurar un host virtual para que su aplicación haga esto simplemente siga estos pasos
Abra la aplicación del panel de control XAMPP y detenga Apache. Tenga en cuenta que las máquinas con Windows tardías pueden ejecutarlo como un servicio, así que marque la casilla a la izquierda del módulo Apache.
Navegue hacia
C:/xampp/apache/conf/extra
o donde se encuentren sus archivos XAMPP.Abra el archivo llamado httpd-vhosts.conf con un editor de texto.
Alrededor de la línea 19 encuentre #
NameVirtualHost *:80
y descomente o elimine el hash.En la parte inferior del archivo, pegue el siguiente código:
C:/Windows/System32/drivers/etc/hosts
, donde hosts es el archivo. Ábralo con el bloc de notas.127.0.0.1 localhost
la resolución del nombre localhost se maneja dentro del DNS mismo.
El artículo original se puede encontrar aquí.
fuente
Siempre hay una razón para tener una carpeta pública en la configuración de Laravel, todas las cosas relacionadas públicas deben estar presentes dentro de la carpeta pública,
Simplemente escriba la condición de reescritura en el
.htaccess
archivo e instale el módulo de reescritura y habilite el módulo de reescritura, el problema que agrega público en la ruta se resolverá.fuente
Sé que son una gran solución para este problema. La mejor y más fácil solución es agregar un archivo .htaccess en el directorio raíz .
Probé las respuestas que proporcionamos para este problema, sin embargo, enfrenté algunos problemas con auth: api guard en Laravel.
Aquí está la solución actualizada:
Cree el archivo .htaccess en su directorio raíz y agregue este código. Y todo va bien
fuente
Laravel 5.5
Después de instalar Laravel por primera vez, me enfrenté al famoso "problema de la carpeta pública" y se me ocurrió esta solución que, en mi opinión personal , es "más limpia" que las otras que encontré en la Web.
Logros
public
palabra en el URI.env
archivo contra personas curiosasTodo se puede hacer simplemente editando el
.htaccess
usomod_rewrite
y cuatro reglas simples.Pasos
.htaccess
archivopublic/.htaccess
a la raíz principalComenté todo, por lo que debería quedar claro (espero) también para aquellos que nunca lo han usado
mod_rewrite
(no es que sea un experto, todo lo contrario). Además, para comprender las reglas, debe quedar claro que, en Laravel, si Bill se conectahttps://example.com
,https://example.com/index.php
está cargado. Este archivo solo contiene el comandoheader("refresh: 5; https://example.com/public/")
, que envía la solicitud ahttps://example.com/public/index.php
. Este segundoindex.php
es responsable de cargar el controlador y otras cosas.La siguiente regla (originalmente en
public/.htaccess
) se puede eliminar. La misma regla, de hecho, se explicita de manera más detallada en las últimas dos reglas.EDIT: Me perdí Abhinav Saraswat solución 's y su respuesta debe ser la aceptada. Solo una regla simple y clara que redirige todo el tráfico a la carpeta pública sin modificar ningún archivo.
fuente
En primer lugar puedes usar estos pasos
fuente: https://stackoverflow.com/a/28735930
después de seguir estos pasos, debe cambiar todas las rutas de CSS y script, pero esto será agotador.
Propuesta de solución : simplemente puede hacer cambios menores en la
helpers::asset
función.Para esto :
abierto
vendor\laravel\framework\src\Illuminate\Foundation\helpers.php
ir a la línea 130
escribir
"public/".$path
en lugar de$path
,fuente
Active el módulo mod_rewrite con
y reiniciar el apache
Para usar mod_rewrite desde archivos .htaccess (que es un caso de uso muy común), edite el VirtualHost predeterminado con
Debajo de "DocumentRoot / var / www / html" agregue las siguientes líneas:
Reinicie el servidor nuevamente:
fuente
He leído algún artículo antes y está funcionando bien, pero realmente no sé si es seguro o no
Edite el index.php
a
fuente
Incluso si no recomiendo poner Laravel en la carpeta raíz, hay algunos casos en los que no se puede evitar; para esos casos, los métodos anteriores no funcionan para los activos, así que hice una solución rápida cambiando el htaccess: después de copiar server.php a index.php, edite el archivo .htaccess de la siguiente manera:
Esta fue una solución rápida que tuve que hacer para que cualquiera pueda actualizarla.
fuente
El problema es que si escribe / public y aún estará disponible en la url, por lo tanto, creé una solución que debería colocarse en public / index.php
esta paz de código eliminará el público de la url y dará un 404 y luego redirigirá a la url sin el público
fuente
Otro método que utilizo es crear un enlace simbólico (en Linux, no sé sobre Win) usando el comando ln en htdocs o www, es decir,
ln projectname/public project
el sitio es accesible a través de localhost / projectfuente
Puede eliminar la palabra clave pública de la URL utilizando varios métodos.
1) Si está utilizando un alojamiento dedicado y tiene acceso de root, puede eliminar la palabra clave pública de la url usando Virtual Host. Debe proporcionar la ruta DocumentRoot con public. Entonces esto iniciará el índice del directorio público y lo eliminará de la url.
2) Si no tiene acceso a la raíz de su alojamiento, entonces debe generar un nuevo archivo .htaccess en su directorio raíz y colocar el código de la siguiente manera
Puedes obtener más referencia aquí.
fuente
Cree el archivo .htaccess en el directorio raíz y coloque el código como se muestra a continuación.
Cree el archivo .htaccess en el directorio / public y coloque el código como se muestra a continuación.
fuente
Encontré la solución más funcional para este problema.
Simplemente edite su
.htaccess
en la carpeta raíz y escriba el siguiente código. Nada más requeridofuente
He intentado alguna solución aquí y encontré htaccess que funciona para laravel 5.2, como este:
cuando tienes otro archivo o carpeta para prohibir solo agrega
fuente
No necesita hacer mucho, solo cree un archivo .htaccess en el directorio raíz y pegue / guarde el siguiente;
fuente