Quitando el espacio de nombre "public" de la url en laravel 5
Quizás a muchas personas como yo al iniciar LARAVEL se hayan sentido incomodas al ejecutar el proyecto en el navegador. Quizás muchos de los que leemos este blog estamos acostumbrados a la tradicional forma de acceder a nuestra aplicación donde solo escribimos el host, el puerto y seguidamente el nombre de nuestro proyecto, quedando algo parecido a continuación:
http://servidor:puerto/nombreProyecto
Ejemplo
en un entorno de desarrollo:
http://localhost/pruebPhp
Al crear
un proyecto laravel vemos que por defecto encontramos una carpeta llamada public
la cual como su nombre lo indica es una carpeta de recursos públicos y a la
cual es donde pueden acceder los usuarios de la aplicación (todas las
peticiones llegan a esta carpeta). Dentro de esta carpeta nosotros podemos
almacenar todos los archivos estáticos y que queremos hacer públicos a los
usuarios como hojas de estilo css, archivos javascript, imágenes, etc; en ella
encontramos un archivo muy importante llamado index.php el cual es el
responsable de iniciar el framework.
Ahora
veamos que tenemos que hacer para decirle a nuestro framework que ya no
queremos la palabra “public” en nuestra url.
Lo
primero que haremos será crear un proyecto llamado noPublicUrl, utilizando
composer nos dirigimos a la carpeta donde se ejecutan nuestros archivos php (varía
dependiendo el entorno) y escribimos en la consola: composer create-project
laravel/laravel noPublicUrl --prefer-dist
Una vez
creado podemos verificar de que todo este correctamente configurado
Seguidamente
cortamos todos los archivos y carpetas que se encuentran dentro de la carpeta
public y los pegamos en la raíz del proyecto
archivos dentro de public
aca estamos en la raíz del proyecto
Eliminamos la carpeta public ya que esta se encuentra ahora vacía.
Lo siguiente y último que haremos será modificar el archivo index.php que ahora
se encuentra en la raíz, lo abrimos con nuestro editor de preferencia y
modificamos las siguientes líneas.
En resumen lo que hicimos fue eliminar los dos puntos
seguidos (..) ya que lo que nos dicen estos puntos es que para encontrar el
archivo autoload.php y app.php ambos ubicados dentro de una carpeta llamada
bootstrap era necesario ir un directorio atrás para luego entrar a la carpeta
bootstrap. Pero como nosotros cortamos los archivos de la carpeta public y
retrocedimos un directorio atrás quedando en la raíz del proyecto estos puntos
seguidos (..) ya no son necesarios. Guardamos el archivo index.php y lo cerramos.
Si ahora ejecutamos nuestro proyecto como normalmente lo haríamos
obtendríamos un error ya que el framework ya no está apuntando a la carpeta
public
Ahora ejecutemos el proyecto sin agregarle el espacio de
nombre public
http://localhost/noPublicUrl
Observamos
que ya funciona nuestro proyecto sin necesidad de agregarle public seguido del
proyecto. Quizás por motivos de organización los archivos css y js nos gustaría
tenerlos más organizados, en mi caso creo una carpeta llamada assets y dentro
copio todos estos archivos.
Recuerda
que cuando quieras incluir tus hojas de estilo y archivos js ahora apuntaras a
la raíz del proyecto no a la carpeta public
En mi
caso como guardo los css y js en una carpeta assets yo llamaría los estilos,
javascript y cualquier otro recurso de la siguiente manera
<link href="{{ asset('assets/css/bootstrap.min.css') }}"
rel="stylesheet">
<script src="{{ asset('assets/js/jquery-1.11.2.min.js')
}}"></script>
Y así
cualquier otro recurso que incluyamos dentro de la carpeta assets. Si por el
contrario todos tus recursos están en la raíz entonces seria así:
<link href="{{ asset('css/bootstrap.min.css') }}"
rel="stylesheet">
<script src="{{ asset('js/jquery-1.11.2.min.js')
}}"></script>