2009-08-26 15 views
19

Estoy tratando de obtener una aplicación CakePHP para funcionar. Para ello, he creado una instalación totalmente nueva de Debian, actualizado la configuración y poner todo en/var/www, que tiene el siguiente contenido:.htaccess para cakephp

app 
cake 
.htaccess 
index.php 
vendors 

El archivo .htaccess contiene lo siguiente:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ /webroot/ [L] 
    RewriteRule (.*) /webroot/$1 [L] 
</IfModule> 

Si tengo acceso a mi servidor virtual (http://myhost/) veo la página correcta. Pero incluso el JavaScript cargada con src="/js/validate.js" falla (se encuentra dentro de /var/www/app/webroot/js/validate.js):

[Wed Aug 26 15:45:12 2009] [error] [client 10.7.10.52] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace. 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3063): [client 10.7.10.52] r->uri = /webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/webroot/webroot/webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/webroot/webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /webroot/js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] core.c(3069): [client 10.7.10.52] redirected from r->uri = /js/prototype.js 
[Wed Aug 26 15:45:12 2009] [debug] mod_deflate.c(632): [client 10.7.10.52] Zlib: Compressed 649 to 405 : URL /webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/webroot/js/prototype.js 

De ahí mi pregunta : ¿cuál es el .htaccess correcto requerido para CakePHP?

Muchas, muchas gracias!

+1

¿Qué directorio tiene para la raíz del sitio en su configuración de apache? Debería ser/var/www/app/webroot: eso puede solucionar su problema. – inkedmn

+0

@inkedmn: gracias, sería/var/www - pero el error fue porque estaba usando solo un .htaccess, no 3, como acabo de descubrir. ¡Gracias! – MrG

Respuesta

55

La respuesta es que hay 3 diferentes archivos .htaccess:

/var/www/app/webroot/.htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 

/var/www/app/.htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ webroot/ [L] 
    RewriteRule (.*) webroot/$1 [L] 
</IfModule> 

/var/www/.htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ app/webroot/ [L] 
    RewriteRule (.*) app/webroot/$1 [L] 
</IfModule> 

Ha sido mi culpa, todo está en la lista en el CakePHP site. ¡Gracias a todos!

+0

Después de encontrar mis archivos de registro y buscar en Google los errores que enumeró anteriormente, ¡encontré esto! ¡Muchas gracias! – DirtyBirdNJ

+0

gran respuesta ......... funcionó para mí –

+0

gracias ... me ayudó mucho :) – Alex

2

El .htaccess correcta es la opción predeterminada:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ webroot/ [L] 
    RewriteRule (.*) webroot/$1 [L] 
</IfModule> 

Hay que añadir esto en "/ etc/sites-enabled/apache2/default":

<Directory /var/www> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    allow from all 
</Directory> 

si ya existe sección de cambio AllowOverride None a AllowOverride All

0

La eliminación de .htaccess del archivo principal puede resolver este problema. Se trabajó para mí (no es necesario quitar de Webroot)

0

si lo permite su proveedor puede poner todo en el archivo httpd.conf como sigue

<Directory /var/www> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    allow from all 
    <IfModule mod_rewrite.c> 
     RewriteEngine on 
     RewriteRule ^$ webroot/ [L] 
     RewriteRule (.*) webroot/$1 [L] 
    </IfModule> 
</Directory> 

Y así sucesivamente para otros directorios ...