3.3.4 Apache y mod_rewrite (y .htaccess)
El texto original ha cambiado despues que la traduccion. Por favor ayundanos a reslover este differencia. Puedes:
A pesar de que CakePHP está hecho para funcionar con mod_rewrite sin tocar nada, y normalmente así es, hemos notado que algunos usuarios tienen dificultades para lograr que todo funcione correctamente en sus sistemas.
Aquí hay unas cuantas cosas que puedes probar para conseguir que funcione correctamente. Primero mira en tu httpd.conf (asegúrate de estar editando el httpd.conf del sistema y que no es httpd.conf específico de un usuario o del site).
Asegúrate que la reescritura .htaccess esté permitida y que
AllowOverrideesté establecido aAllpara elDocumentRootadecuado. Deberías ver algo similar a:# # Cada directorio al que tiene acceso Apache puede ser configurado en # función de qué servicios y características están permitidas y/o # desactivadas en dicho directorio (y sus subdirectorios). # # Primero, configuramos "por defecto" para que sea un conjunto de # características muy restrivo. # <Directory /> Options FollowSymLinks AllowOverride All # Order deny,allow # Deny from all </Directory>## Cada directorio al que tiene acceso Apache puede ser configurado en# función de qué servicios y características están permitidas y/o# desactivadas en dicho directorio (y sus subdirectorios).## Primero, configuramos "por defecto" para que sea un conjunto de# características muy restrivo.#<Directory />Options FollowSymLinksAllowOverride All# Order deny,allow# Deny from all</Directory>
Asegúrate de estar cargando el módulo mod_rewrite correctamente. Debes ver algo como:
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
En muchos sistemas esto estará comentado (comenzando la línea con #) por defecto, así que sólo tendrás que quitar los símbolos # del principio.
Tras realizar los cambios reinicia Apache para estar seguro de que las opciones de configuración están activas.
Asegúrate de que tus ficheros .htaccess están en los directorios correctos. Esto puede pasar durante la copia porque algunos sistemas operativos consideran los archivos que comienzan por '.' como ocultos y por lo tanto no los copian.
Asegúrate de que tu copia de CakePHP es de las sección de descargas de nuestro site o nuestro repositorio GIT, y que ha sido desempaquetado correctamente verificando que existen los ficheros .htaccess:
En el directorio raíz de Cake (necesita ser copiado al directorio, esto redirige todo a tu aplicación de Cake):
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule>
<IfModule mod_rewrite.c>RewriteEngine onRewriteRule ^$ app/webroot/ [L]RewriteRule (.*) app/webroot/$1 [L]</IfModule>
En el directorio app de Cake (será copiado por bake):
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] </IfModule><IfModule mod_rewrite.c>RewriteEngine onRewriteRule ^$ webroot/ [L]RewriteRule (.*) webroot/$1 [L]</IfModule>
En el directorio webroot de Cake (será copiado a tu webroot de la aplicación por bake):
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule><IfModule mod_rewrite.c>RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php?url=$1 [QSA,L]</IfModule>
En muchos servicios de hosting (GoDaddy, 1and1), tu servidor web está realmente siendo servido desde un directorio de usuario que ya utiliza mod_rewrite. Si estás instalando CakePHP en un directorio de usuario (http://ejemplo.com/~nombreusuario/cakephp), o en cualquier otra estructura que ya utilice mod_rewrite necesitarás añadir sentencias
RewriteBasea los archivos .htaccess que utiliza CakePHP (/.htaccess, /app/.htaccess, /app/webroot/.htaccess)Esto puede ser añadido a la misma sección con la directiva
RewriteEngine, así, por ejmplo, tu archivo .htaccess en el webroot devería ser así:<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule><IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php?url=$1 [QSA,L]</IfModule>
Los detalles de esos cambios dependen de tu configuración, y pueden incluir cosas adicionales que no están relacionadas con Cake. Consulta la documentación online de Apache para más información.


























