Zend Framework – Tutto il progetto sulla DOCUMENT_ROOT
Capita spesso di dover pubblicare dei siti dove, sui server, si ha l’accesso in scrittura solo sulla directory pubblica principale, la DOCUMENT_ROOT del sito. Questo accade sempre (o quasi) sui server condivisi. Come risolvere questo problema? Il nostro obbiettivo è quello di avere la stessa struttura di un progetto di default di Zend Framework sulla cartella della DOCUMENT_ROOT, ma permettendo all’utente l’accesso alla sola cartella public. Per fare ciò dobbiamo creare un file .htaccess nella DOCUMENT_ROOT, dicendo ad apache di reindirizzare tutte le richieste sul file index.php che abbiamo nella carella public. Il contenuto del file .htaccess sulla DOCUMENT_ROOT, che useremo come .htaccess principale (lo stesso che dovreste mettere sulla cartella public, che potete quindi eliminare), sarà il seguente:
SetEnv APPLICATION_ENV development
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]
La prima riga, come dovreste sapere, è per definire il tipo di utilizzo (quindi le diverse configurazioni) del progetto. Le altre definiscono le regole del mod_rewrite di Apache per reindirizzare le richieste sulla cartella public.