Mise en production de Zend Framework sur un serveur mutualisé

Posted on 04/06/2010 · Posted in Zend

Zend Framework LogoLorsque l’on dispose d’un serveur dédié, la mise en production d’une application Zend Framework est assez simple; il suffit de modifier le DocumentRoot du VirtualHost.

Si l’on dispose d’un hébergement mutualisé, il faut aussi pouvoir proposer à nos visiteurs un accès au site via www.domain.tld et non pas www.domain.tld/public/

Première solution

La première solution, consiste à déplacer le fichier /public/index.php à la racine du domaine et de modifier la définition de la constante APPLICATION_PATH de ce même fichier.
Le seul soucis de cette solution, c’est que les appels aux ressources de type CSS ou JS devront être modifiés pour pointer vers www.domain.tld/public/
Personnellement, je trouve cela complètement nul…

Deuxième solution

La deuxième solution – bien plus élégante – passe par l’ajout d’un .htaccess à la racine du domaine.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
RewriteEngine On
# Only apply to URLs on this domain
RewriteCond %{HTTP_HOST} ^(www.)?domain.tld$

# Only apply to URLs that aren't already under folder.
RewriteCond %{REQUEST_URI} !^/public/

# Don't apply to URLs that go to existing files or folders.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all those to insert /folder.
RewriteRule ^(.*)$ /public/$1

# Also redirect the root folder.
RewriteCond %{HTTP_HOST} ^(www.)?domain.tld$
RewriteRule ^(/)?$ public/index.php [L]

Là, tout est magique et fonctionne sans aucune autre modification de l’application.
Pour protéger l’accès à vos autres répertoires, et principalement /application qui contient surement vos mots de passe BDD non chiffrés. Rajouter un fichier .htaccess contenant

1
deny from all