Zend Framework – Impostare la document root da .htaccess

Zend Framework
fonte: dal web

Questo è uno dei trucchetti che può davvero far comodo conoscere quando sviluppiamo web application con Zend Framework (ZF). Quando creiamo un progetto con ZF ci troviamo di fronte una struttura tipicamente simile alla seguente:

[code]
nome_preogetto/
application/
controllers/
models/
views/
scripts/
library/
public/
tests/
[/code]

Nella cartella “public” mettiamo tutti i file che devono risultare accessibili direttamente (immagini, file index.php, ecc.), mentre nelle altre cartelle strutturiamo le altri parti della web application. Sarebbe dunque molto comodo far puntare la document root del web server su questa directory. Spesso però non abbiamo la possibilità di modificare la configurazione del web server, e dobbiamo arraggiarci in altro modo.

Per risolvere il problema possiamo sfruttare l’.htaccess in questo modo: per prima cosa spostiamo l’.htaccess che normamente troviamo nella directory “public” nella directory “nome_progetto”, ovvero nella root directory; nel file .htaccess inseriamo il seguente codice:

 

[code]
SetEnv APPLICATION_ENV production

RewriteEngine On
RewriteRule ^\.htaccess$ – [F]
RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]
RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ – [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]
[/code]

Questa configurazione ci risolve il problema senza apportare modifiche alla struttura standard della web application. Alla riga 1. abbiamo impostato il valore della variabile d’ambiente in cui gira l’applicazione: chiaramente il suo valore dipende da quelli impostati e dall’ambiente in cui sta girando la web application, ma se avessimo configurato il valore “development” e fossimo in ambiente di sviluppo, al posto di “production” dovremmo mettere “development”.