Chicos, tengo un proyecto de Laravel y está funcionando bien. Cada vez que comienzo el proyecto, escribo el comando php artisan serve y luego escribo la url localhost:8000 en mi navegador. Pero ahora quiero comenzar mi proyecto solo escribiendo la url localhost/projectname.

Así que investigué un poco y descubrí una forma de hacerlo, lo hice posible cambiando el archivo server.php del directorio raíz a index.php y copiando el archivo htaccess de la carpeta pública al directorio raíz '. De esta manera, mi navegador cargó solo archivos html o php, pero los archivos css y js no se cargaron, por lo que tuve que modificar el enlace en el archivo blade, por ejemplo:

Anteriormente, un archivo style.css estaba vinculado como:

 <link rel="stylesheet" type="text/css" href="{{asset('front_end/assets/css/style.css')}}">

Ahora enlace el mismo archivo style.css como se muestra a continuación:

<link rel="stylesheet" type="text/css" href="{{asset('/public/front_end/assets/css/style.css')}}">

Y funciona bien.

Pero ahora he encontrado otro problema, he almacenado algunos archivos (imágenes) en el directorio storage/app/public/myfolder, así que para acceder a los archivos tuve que usar el comando php artisan storage:link y acceder a los archivos (imágenes) desde el directorio mencionado anteriormente desde el archivo blade, uso el siguiente código:

<img src="{{$url = Storage::url('myfolder/'.$company->logo_name)}}"> 

Este código funcionó solo funcionó cuando comencé mi proyecto usando el comando php artisan serve. Ahora no estoy enlazando, ¿qué debo hacer? ¿Y también pueden decirme cómo cambié el archivo server.php a index.php es la forma correcta o no? ¿Y qué hacen ustedes en sus proyectos reales?

Gracias.

1
Surya Neupane 23 oct. 2017 a las 16:42

3 respuestas

La mejor respuesta

Al implementar un proyecto Laravel, desea que su configuración nginx o apache apunte a su ruta public de su proyecto. No es necesario cambiar los archivos server.php o index.php.

Ejemplo de configuración de Apache:

<VirtualHost *:80>
   ServerName project.dev
   DocumentRoot "/home/vagrant/projects/project/public"
   <Directory "/home/vagrant/projects/project/public">
      AllowOverride all
   </Directory>
</VirtualHost>

Como puede ver con este ejemplo de configuración apache, apunta al directorio público de su proyecto.

Puede lograr esto localmente instalando Apache o nginx en su máquina local.

Recomendaría seguir la guía de documentación de Laravel sobre el uso de Vagrant's Homestead para tener una idea de cómo funciona esto antes de decidir ejecutar esto en un servidor. Un enlace aquí

Hay un par de opciones que puede tomar para lograr esencialmente el mismo objetivo. Esto depende de la máquina en la que se está ejecutando y las preferencias personales.

3
Galironfydar 23 oct. 2017 a las 13:59

No necesita modificar ningún archivo.

Necesitas uno de estos:

  • Servidor web instalado localmente, Apache o Nginx
  • Una máquina virtual vagabunda para ejecutar el proyecto como en entornos de producción como Homestead
  • Ayudante de cámara

Si decide usar el servidor web, solo debe considerar apuntar a la carpeta project/public en lugar de project.

Al hacer una de estas opciones, no necesitará modificar la URL de los activos, ya que public no debería ser parte de su URL en ningún caso.

1
Lloople 23 oct. 2017 a las 13:53

En primer lugar, no haga ningún ajuste en el archivo server.php, está bien. Para ejecutar su proyecto con url like, http: //localhost/my-project.dev o simplemente mi http://project.dev, use WAMP o XAMPP (si trabaja en una máquina con Windows) y la lámpara para Linux. También puedes pagar Laravel's Homestead.

Luego configure el host virtual. Consulte este tutorial para configurar host virtual en WAMP - http: // www .coderomeos.org / how-to-set-up-virtual-host-on-wamp-server

Y no coloque sus activos en la carpeta public / assets para evitar el uso del enlace de almacenamiento.

0
Abid Raza 23 oct. 2017 a las 13:59