divendres, 2 d’octubre del 2009

CakePHP sense mod_rewrite

És fàcil que a l'hora d'instal·lar un cake ens trobem amb servidors que no tenen activat el mòdul mod_rewrite i per tant les urls netes, del tipus "www.nomweb.com/controlador/accio" no funcionen.

La primera recomanació és demanar que ens l'activin, ja que fer servir aquest tipus d'URLs fa l'aplicació més elegant i és molt útil pels buscadors.

Si pel motiu que sigui no és possible que ens l'activin, no desesperem. Cake contempla aquesta possibilitat i té una alternativa, utilitzar les "pretty URLs". Canviant un parell de configuracions podrem fer que l'aplicació funcioni amb l'única diferència que les URLs seran del tipus "www.nomweb.com/index.php/controlador/accio".

El manual explica els passos a seguir:
  • A /app/config/core.php, descomentar la linia:
    Configure::write('App.baseUrl', env('SCRIPT_NAME'));
  • Esborrar els arxius .htaccess següents:
    • /.htaccess
    • /app/.htaccess
    • /app/webroot/.htaccess

Amb això hauriem de tenir el tema resolt.

No obstant, oer algún motiu encara pot ser que els enllaços que ens genera Cake no ens funcionin. En aquest cas és possible que ens faci falta afegir un interrogant després de "index.php".

Si així se'ns soluciona el problema és que el nostre servidor ens està dificultant la gestió de la variable "path_info" que és la que es fa servir per construir aquestes URLs.

N'hi ha prou amb modificar la línia que hem descomentat abans i deixar-la d'aquesta manera.
Configure::write('App.baseUrl', env('SCRIPT_NAME').'?');

Així CakePHP ens construirà tots els enllaços amb l'interrogant.

1 comentari:

Albert Mañé ha dit...

Ei! primera contribució Arnau, així m'agrada, que treballis de valent ;)

A tot això, la sol·lució al problema em sembla força neta, tot i que l'única vegada que em vaig veure obligat a no fer servir mod_rewrite, no vaig tenir problema amb les "pretty url"