entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Cómo hacer que la carpeta public de laravel 4 sea la primera que se cargue...

Cómo hacer que la carpeta public de laravel 4 sea la primera que se cargue, cuando no está en local, sino en un servidor y no depende de mí ?

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola Pedro,

podés hacer esto con un regla de reescritura. Asumiendo que el hosting usa Apache y que tiene soporte para mod_rewrite, sería así:

RewriteEngine on
# Cambiar yourdomain.com a tu dominio principal.
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
# Cambiar 'subfolder' por el directorio que se desea usar como dominio principal.
RewriteCond %{REQUEST_URI} !^/subfolder/
# NO cambiar esta línea
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Cambiar 'subfolder' por el directorio que se desea usar como dominio principal.
RewriteRule ^(.*)$ /subfolder/$1
# Cambiar yourdomain.com a tu dominio principal (otra vez).
# Cambiar 'subfolder' por el directorio que se desea usar como dominio principal.
# seguido por / y el archivo principal de tu sitio, index.php, index.html, etc.
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteRule ^(/)?$ subfolder/index.php [L] 

Guardás todo en un archivo llamado .htaccess (ojo al punto inicial) y lo subís por FTP a la reíz pública del sitio.

Saludos!

0voto

pedro_cabrera comentado

Gracias Leonardo, y en local que es donde hago las pruebas:

http://localhost/laravel

...que es el equivalente al raiz del host remoto, ¿ como sería este .htaccess ?

0voto

Leonardo-Tadei comentado

En local cambiá "yourmaindomain.com" por "localhost" o cómo sea que se llame tu dominio local.

Si no tenés mod_rewrite habilitado en tu servidor local, no va a funcionar... son cosas más bien para probar el el servidor directaemente: si no funciona, borrás o renombrás el .htaccess y todo vuelve a estar como antes ;-)

0voto

pedro_cabrera comentado

Hola Leonardo, hice lo que me comentaste para el modo local, en el host remoto no he probado nada hasta que no me funcione en local, pero me da un mensaje de algo así como "El lugar al que desea acceder tiene un bucle" "excesivos redireccionamientos".

Yo lo he repasado todo y no encuentro nada, lo cual es muy normal.
A ver si me puedes ayudar, gracias.

RewriteEngine on
# Cambiar yourdomain.com a tu dominio principal.
RewriteCond %{HTTP_HOST} ^(www.)?localhost$
# Cambiar 'subfolder' por el directorio que se desea usar como dominio principal.
RewriteCond %{REQUEST_URI} !^/public/
# NO cambiar esta línea
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Cambiar 'subfolder' por el directorio que se desea usar como dominio principal.
RewriteRule ^(.*)$ /public/$1
# Cambiar yourdomain.com a tu dominio principal (otra vez).
# Cambiar 'subfolder' por el directorio que se desea usar como dominio principal.
# seguido por / y el archivo principal de tu sitio, index.php, index.html, etc.
RewriteCond %{HTTP_HOST} ^(www.)?localhost$
RewriteRule ^(/)?$ public/index.php [L] 

0voto

Leonardo-Tadei comentado

Hola Pedro,

estoy probando exactamente esto:

RewriteEngine on
# Cambiar yourdomain.com a tu dominio principal.
RewriteCond %{HTTP_HOST} ^(www.)?localhost$
# Cambiar 'subfolder' por el directorio que se desea usar como dominio principal.
RewriteCond %{REQUEST_URI} !^/laravel/
# Cambiar 'subfolder' por el directorio que se desea usar como dominio principal.
RewriteRule ^(.*)$ /laravel/$1
# Cambiar yourdomain.com a tu dominio principal (otra vez).
# Cambiar 'subfolder' por el directorio que se desea usar como dominio principal.
# seguido por / y el archivo principal de tu sitio, index.php, index.html, etc.
RewriteCond %{HTTP_HOST} ^(www.)?localhost$
RewriteRule ^(/)?$ laravel/index.php [L] 

en http://htaccess.madewithlove.be/ y se comporat como debe.

http://localhost se reescribe a http://localhost/laravel/index.php
http://localhost/script.php se reescribe a http://localhost/laravel/script.php
http://localhost/dir1/script.php se reescribe a http://localhost/laravel/dir1/script.php

Le tuve que sacar dos líneas del %{REQUEST_FILENAME} porque la variable no está soportada, así que no hace falta.

Es esto lo que querés que pase con las reglas de rescritura???

0voto

pedro_cabrera comentado

En local lo tengo de la siguiente manera:

  • localhost que es donde tengo las distintas aplicaciones equivalente a la carpeta www de wamp.
    y dentro por cada carpeta una aplicación, en el caso de esta, la carpeta es A_laravel, que a su vez contiene todas las carpetas de laravel 4, y concretamente la public que es la que inicialmente hay que cargar para visualizar la web.
    El archivo que me has dado lo he modificado como:

    RewriteEngine on

    Cambiar yourdomain.com a tu dominio principal.

    RewriteCond %{HTTP_HOST} ^(www.)?localhost$

    Cambiar 'subfolder' por el directorio que se desea usar como dominio principal.

    RewriteCond %{REQUEST_URI} !^/A_laravel/public/

    Cambiar 'subfolder' por el directorio que se desea usar como dominio principal.

    RewriteRule ^(.*)$ /A_laravel/public/$1

    Cambiar yourdomain.com a tu dominio principal (otra vez).

    Cambiar 'subfolder' por el directorio que se desea usar como dominio principal.

    seguido por / y el archivo principal de tu sitio, index.php, index.html, etc.

    RewriteCond %{HTTP_HOST} ^(www.)?localhost$
    RewriteRule ^(/)?$ A_laravel/public/index.php [L]

pero me hace lo mismo.
Te paso una captura de pantalla con el error.
Mensaje de error de Google Chrome

Yo lo incluyo como .htaccess en el directorio A_laravel (http://localhost/A_laravel/.htaccess) que es donde se encuentran todas las carpetas de laravel 4 incluida la carpeta public (http://localhost/A_laravel/public) que es a la que quiero que acceda diréctamente.

Un saludo, gracias y perdona este engorro.

0voto

Leonardo-Tadei comentado

Pero Pedro! Tenés que poner el archivo .htaccess en la raíz del sitio web!

En tu caso iría en http://localhost/.htaccess

0voto

pedro_cabrera comentado

pero de esta forma me afectaría supongo que a todas las webs que tengo en localhost y no solo a la de la carpeta A_laravel.

0voto

Leonardo-Tadei comentado

Si no vas a poner el .htaccess en la raíz del sitio, sino en el directorio A_laravel, sacá de las reglas toda referencia relativa a A_laravel y dejá solo las rutas absolutas...

PD: de paso, convertí tu respeusta en comentario, así no aparecen dos respuestas cuando solo hay una sola.

0voto

bbsinkler comentado

Sos un genio tio me funciono al 100 gracias leonardo-tadei ,solo por eso me registre

0voto

bbsinkler comentado

A mi tampoco me funciona en el local mi archivo haccess lo tengo en la raiz de mi proyecto y tambien he probado de todo

0voto

Leonardo-Tadei comentado

Hola @bbsinkler,

puede ser que no te funciona porque tu Apache no tiene el módulo mod_rewrite o porque no tiene habilitado el override de las reglas.

La regla de reescritura sí funciona y lo podés cheaquear acá: http://htaccess.madewithlove.be/ ... deber ser algo de la configuración de tu servidor web.

Saludos!

0voto

bbsinkler comentado

el modulo rew si lo tengo descomentado es decir si esta funcionando y el override no se q es

0voto

bbsinkler comentado

este es mi htaccess

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(www.)?localhost/demo$

RewriteCond %{REQUEST_URI} !^/public/

RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{HTTP_HOST} ^(www.)?localhost/demo$

RewriteRule ^(/)?$ public/index.php [L] 

0voto

bbsinkler comentado

ya probe poniendo el AllowOverride en All y nada ya lo puse en la raiz de htdocs y dentro de la carpeta del proyecto y nada

0voto

Peter comentado

@bbsinkler por favor agrega tu comentarios como comentarios y no como respuestas :) Ya moví todos los anteriores. Gracias.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta