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.
Aucun commentaire
Merci pour l’astuce ! Cependant, comment faites-vous pour accéder à un autre environnement ?
Merci pour ce post intéressant, je savais comment faire xxxx/administration/* mais pas en utilisant un sous-domaine. Ca fait encore plus pro 🙂
Ça me rappelle un truc 😉 (ping @JeremyB)
Nice tip.
J’avais parlé de cette méthode il y a un moment sur mon site.
Voici aussi comment faire si vous êtes sur du mutualisé et que vous n’avez pas accès au httpd.conf
http://symfony-check.org/permalink/delete-backend-php-from-your-uri
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