Vhost drupal.conf

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine VirtualHost Apache pour un site Drupal
Module requis mod_rewrite
Point clé URL propres via index.php?q=
Voir aussi Vhosts · Drupal · Modules apache

Exemple de vhost Apache type pour héberger un site Drupal, avec réécriture d'URL pour obtenir des URL propres (clean URLs) plutôt que des URL avec paramètre ?q= explicite.

Exemple de configuration

#
# example.com (/etc/httpd/sites-available/example.com)
#
<VirtualHost example.com:80>
    ServerAdmin admin@example.com
    ServerName  example.com
    ServerAlias www.example.com *.example.com

    DocumentRoot /var/www/example.com/htdoc
    <Directory "/var/www/example.com/htdoc">
        RewriteEngine on
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog  /var/log/httpd/example.com/logs/error.log
    CustomLog /var/log/httpd/example.com/logs/access.log combined
</VirtualHost>

(Require all granted remplace ici l'ancienne syntaxe Order allow,deny / Allow from all du source — propre à Apache 2.2, obsolète depuis Apache 2.4.)

Le bloc RewriteCond/RewriteRule est le cœur du mécanisme : toute requête qui ne correspond ni à un fichier (!-f) ni à un répertoire (!-d) existant sur le disque est réécrite en interne vers index.php?q=<chemin demandé> — c'est ce qui permet à Drupal de router des URL comme /actualites/mon-article sans que ces chemins existent physiquement.

Voir aussi

  • Vhosts — configuration générale des hôtes virtuels Apache
  • Drupal — le CMS hébergé par ce vhost
  • Modules apache — activation de mod_rewrite