VirtualHost Apache pour Drupal

Dans une installation "de base" Drupal, celui-ci embarque un fichier .htaccess qui définit les règles de réécriture d'URL et de sécurité, et autres paramétrage propre au serveur http Apache.

Le souci principal des fichiers .htaccess étant, par contre, que le serveur http va vérifier à chaque fois sur disque (via la lecture du fichier) le contenu de ce fichier.

Pour améliorer les performances, il est possible de ne pas laisser le serveur Apache lire les fichiers .htaccess, via la directive

AllowOverride None

Si on fait cela, on a alors 2 options :

  • soit mettre les directives du fichier .htaccess directement dans la déclaration du VirtualHost
  • soit inclure le fichier .htaccess dans la déclaration ; ainsi, il ne sera chargé qu'une seule fois, au démarrage du serveur http.

Un exemple de fichier est donné ci-dessous, en prenant pour hypothèse que Drupal est installé dans le répertoire /var/www/mondomaine.

<VirtualHost *:80>
   ServerAdmin     webmaster@hebinweb.com
   ServerName   www.mondomaine.com
   DocumentRoot /var/www/mondomaine

  <Directory /var/www/mondomaine>
    AllowOverride None
    Order allow,deny
    Allow from all

    Include /var/www/mondomaine/.htaccess
    Include /var/www/mondomaine/sites/default/files/.htaccess

  </Directory>

  ServerSignature Off

  ErrorLog /var/log/apache2/error.log
  LogLevel info
  CustomLog /var/log/apache2/access.log combined
</VirtualHost>

L'avantage de cette méthode est que, en cas de modification du fichier .htaccess (par exemple pour des raisons de sécurité lors d'un upgrade Drupal) les nouveautés seront prises en compte juste en redémarrant le serveur http.

On profite donc du meilleur des 2 approches : l'utilisation du fichier .htaccess de Drupal, mais avec un chargement une fois pour toute au démarrage, donc avec un impact moindre sur les performances.

Catégorie