Problemas de acceso a ficheros con CakePHP

16 08 2007

Al poner el sitio en producción empleando CakePhP, éste queda inaccesible o, en el mejor de los casos, carga la página de inicio pero sin “css” ni “js”.

Una pista…


“Notice: If your webserver’s URLs are not directly related to physical file paths, you have to use RewriteBase in every .htaccess files where you want to use RewriteRule directives.”

fuente: Apache::RewriteBase

Ejemplo de url del acceso asignada en el servidor:

http://www.misitio.es/aplicacion

Ejemplo del “root” físico:

/users/usuario/public_html

Ejemplo de estructura de directorios empleada al instalar CakePHP:

/users/usuario
/users/usuario/public_html
/users/usuario/public_html/.htacess
/users/usuario/public_html/index.php
/users/usuario/public_html/app
/users/usuario/public_html/app/.htacess
/users/usuario/public_html/app/index.php
/users/usuario/public_html/app/webroot
/users/usuario/public_html/app/webroot/.htacess
/users/usuario/public_html/app/webroot/index.php
/users/usuario/public_html/app/webroot/css
/users/usuario/public_html/app/webroot/files
/users/usuario/public_html/app/webroot/img
/users/usuario/public_html/app/webroot/js
/users/usuario/public_html/cake
/users/usuario/public_html/vendors

Solución

Existen dos grupos de ficheros que pueden emplearse para definir la estructura de
directorios dada al proyecto. Los “.htacces” y los “index.php”.

En este caso, NO es necesario modificar los ficheros “index.php”. Sólo hay que modificar los “.htaccess”.

Como se indicó anteriormente, la url del sitio es la siguiente
“www.misitio.es/aplicacion”, que difiere de la estructura física
“/users/usuario/public_html”.

La solución es tan sencilla como añadir la directiva “RewriteBase /aplicacion” en
todos los ficheros “.htaccess”.

Ejemplo:

public_html/.htaccess

<IfModule mod_rewrite.c>

RewriteEngine on
RewriteBase /aplicacion
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]

</IfModule>


public_html/app/.htaccess

<IfModule mod_rewrite.c>

RewriteEngine on
RewriteBase /aplicacion
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]

</IfModule>


public_html/app/webroot/.htaccess

<IfModule mod_rewrite.c>

RewriteEngine on
RewriteBase /aplicacion
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

</IfModule>

Add to Technorati Favorites

Anuncios

Acciones

Information

One response

28 09 2008
Howar R

Me parece muy buena solución pero en caso de tener el mod_rewrite desactivado, es decir eliminar los archivos .htaccess, cual seria la solución?

Saludos…

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: