Agence web et solutions IT, Experts Symfony contact@avanim-prod.com

L’accès au backend Symfony via sous domaine

14 novembre 2010 jravouna Symfony Étiquettes : , , , 0 Comments

Nous avons tous (ou presque ^^) été confronté au besoin de lier un sous domaine au backend de Symfony. En d’autre terme, comment rediriger une URL du genre « backend.mondomaine.com » vers l’adresse de backend.

Nous expliquerons comment créer un Vhost (hôte Virtuel APACHE) et modifier le settings.

Afin de ne pas avoir de souci de compatibilité, voici notre configuration :
– Serveur Linux Debian
– APACHE 2
– Symfony 1.4

Dans cet exemple, nous voulons que l’adresse backend.mondomaine.com pointe sur le backend de symfony. Admettons que notre répertoire racine de notre projet ce trouve sur /home/projet/public_html (c’est effectivement le cas chez nous).

1/ Configuration du Vhost Apache

Nous allons ici configurer rapidemment notre Vhost. Il faut garder à l’esprit que la configuration Apache d’un Vhost permets énormément de possibilités (Suexec, redirectmatch …etc). Je vous invite à lire la documentation à l’adresse : http://httpd.apache.org/docs/2.0/vhosts/

Voici donc un exemple de configuration rapide du Vhost :
Attention : nous concidérons ici que vous avez déjà un Vhost configurer sur votre répertoire web pour le frontend. Si ce n’est pas le cas, il vous faudra le déclaré de la même façon que ci-dessous mais en modifiant les informations relative au chemin et au nom de domaine.

<VirtualHost *:80>
  ServerName backend.mondomaine.com
  DocumentRoot "/home/projet/public_html/web"
  DirectoryIndex backend.php

  <Directory "/home/projet/public_html/web">
    AllowOverride All
    Allow from All
  </Directory>

  Alias /sf /home/projet/public_html/lib/vendor/symfony/data/web/sf
  <Directory "/home/projet/public_html/lib/vendor/symfony/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

Quelques explications :
– La balise VirtualHost contient la déclaration de votre Vhost
– Les balises Directory servent à définir les directives d’accès aux repertoires
– La variable ServerName permet de définir le nom de domaine principal du Vhost
– La variable DocumentRoot permets de définir le chemin d’accès au site
– La variable DirectoryIndex permets de définir le fichier appelé par défault lors de l’accès au Vhost (par default il s’agit de index.html/php/htm)
Il est à noté qu’il existe beaucoup d’autre paramètres tels que les ServerAlias permettant de personnaliser votre Vhost.

2/ Modification du .htaccess de symfony

Le fichier .htaccess permet de redéfinir les variables apache à la volée. Ceci est rendu possible grâce à la définition du paramètre AllowOveride ALL (passé ALL à NONE pour le désactiver).

Ouvrez le fichier .htaccess citué à la racine de votre site Symfony et dans la définition des directive du mod_rewrite (entre les balises IfModule mod_rewrite.c), ajoutez :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST}  ^backend.*
RewriteRule ^(.*)$ backend.php [QSA,L]

3/ Configuration settings.yml

Ouvrez le fichier apps/backend/config/settings.yml et ajoutez (ou modifier) comme suit afin de ne plus afficher le nom du script (puisque nous l’avons définit en DirectoryIndex plus haut) :

prod:
.settings:
no_script_name:    true

Et enfin un petit :

php symfony cc

Voilà, en espérant que cet article en aidera certain 😉

D’autres articles sur le sujet :

Apache : http://httpd.apache.org/docs/2.0/vhosts/
Documentation officelle : http://www.symfony-project.org/book/1_0/03-Running-symfony
Article de référence : http://www.lexik.fr/blog/symfony/symfony/utilisation-de-vhost-pour-lacces-au-backend-1307

Submit a comment