Utilisation de VHost pour l'accès au backend

L’idée est de ne plus accéder au backend de notre site web en utilisant backend.php dans l’url, mais de passer par un sous domaine.

  • http://www.super-website.com → frontend
  • http://admin.super-website.com → backend

Supposons que mon projet Symfony se trouve dans /home/public_html/.
Commençons par ajouter un vhost pour définir le sous domaine dans Apache. On précise au sous domaine que le fichier index pour ce sous domaine sera backend.php à l’aide de la directive DirectoryIndex.


  ServerName admin.super-website.fr
  DocumentRoot "/home/public_html/web"
  DirectoryIndex backend.php

  
    AllowOverride All
    Allow from All
  

  Alias /sf /home/public_html/lib/vendor/symfony/data/web/sf
  
    AllowOverride All
    Allow from All
  

Ensuite il faut modifier le .htaccess de Symfony afin qu’il redirige les requêtes http du sous domaine vers le fichier backend.php.

Options +FollowSymLinks +ExecCGI


  RewriteEngine On

  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  #RewriteBase /

  # we skip all files with .something
  #RewriteCond %{REQUEST_URI} \..+$
  #RewriteCond %{REQUEST_URI} !\.html$
  #RewriteRule .* - [L]

  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  
  # redirect to the backend web controller
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{HTTP_HOST}  ^admin.*
  RewriteRule ^(.*)$ backend.php [QSA,L]
  
  # no, so we redirect to our front web controller
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php [QSA,L]

Au niveau de la config Symfony, nous pouvons maintenant masquer le nom du script dans les urls du backend:

# apps/backend/config/settings.yml
prod:
  .settings:
    no_script_name:    true
    ...

Et pour finir ne pas oublier de vider le cache =), le backend est maintenant accessible sur http://admin.super-website.com.

Laisser un commentaire

Besoin d’un coup de main ?

Prenez rendez vous au tél avec nous pour discuter de votre projet.
C'est gratuit :)

Prenez RDV gratuitement (30 min)
Photo de Samuel Breton, Directeur Conseil chez agence Choosit à Montpellier

Aucun commentaire

  1. Merci pour l’astuce ! Cependant, comment faites-vous pour accéder à un autre environnement ?

  2. Merci pour ce post intéressant, je savais comment faire xxxx/administration/* mais pas en utilisant un sous-domaine. Ca fait encore plus pro 🙂

  3. Bonjour,

    J’aime bien votre méthode mais effectivement si on a pas accès au sites-available d’apache c’est un peu dur.

    J’avais fait un tuto sur le choix de l’application basée sur le nom de domaine mais je ne l’ai testé qu’en local, dites-moi ce que vous en pensez ?

    http://blog.cwx.be/?p=209

    Bonne soirée

    Christophe

Laisser un commentaire

Voir l’étude de cas
Lire l’article