Section courante

A propos

Section administrative du site

Description

Le fichier de configuration «.htaccess» permet d'indiquer à Apache des règles que doit appliqués au serveur Web lorsque certains URL sont demandées. Ainsi, il offrira la possibilité de demander une authentification, d'effectuer des redirections avec de contextes précises (rediriger www.gladir.com vers un nom de domaine iphone.gladir.com si c'est un iPhone par exemple).

Structure du fichier

Le fichier contient un format de configuration classique avec le caractère «#» pour les remarques. Toutefois, il contient également des balises regroupement des associations particulières.

Syntaxe

parametre valeur

Paramètres

Nom Description Prérequis
AddType valeur Ce paramètre permet d'indiquer le type MIME à appliquer à un répertoire.  
Allow valeur Ce paramètre permet d'indiquer que les accès autorisés.  
AuthDigestAlgorithm valeur Ce paramètre permet d'indiquer s'il faut effectuer le calcul de l'algorithme de la réponse haché dans le processus d'authentification. Voici les valeurs supportées : mod_auth_digest
Valeur Description
MD5 Cette valeur permet d'indiquer qu'il faut uniquement calculer avec la réponse.
MD5-sess Cette valeur permet d'indiquer qu'il faut effectuer le calcul de la réponse en fonction de la session. Cette valeur n'est pas encore intégrée.
AuthDigestDomain valeur Ce paramètre permet d'ajouter la condition qu'il doit correspondre au nom de domaine spécifié. mod_auth_digest
AuthDigestNonceLifetime valeur Ce paramètre permet d'indiquer combien de temps un nonce de serveur est valide. mod_auth_digest
AuthDigestProvider valeur Ce paramètre permet de fixer le fournisseur authentifiant les utilisateurs par cet emplacement. mod_auth_digest
AuthDigestQop valeur Ce paramètre permet de fixer la qualité de protection pour l'authentification. Les valeurs reconnues sont : mod_auth_digest
Valeur Description
none Cette valeur permet d'indiquer aucune authentification n'est effectué.
auth Cette valeur permet d'indiquer une simple authentification.
auth-int Cette valeur permet d'indiquer une authentification avec une vérification d'intégrité MD5.
AuthDigestShmemSize valeur Ce paramètre permet de fixer la quantité de mémoire partagée pour le suivi du traçage des clients. mod_auth_digest
AuthUserFile valeur Ce paramètre permet d'indiquer le nom du fichier avec le chemin des mots de passe à appliquer.  
AuthGroupFile valeur Ce paramètre permet d'indiquer le nom du fichier avec le chemin du groupe à appliquer.  
AuthName valeur Ce paramètre permet d'indiquer le nom de la demande d'authentification.  
AuthType valeur Ce paramètre permet d'indiquer le type d'authentification. On utilise généralement «Basic».  
DefaultType valeur Ce paramètre permet d'indiquer le type MIME par défaut.  
Deny valeur Ce paramètre permet d'indiquer que les accès refusés.  
DirectoryIndex valeur Ce paramètre permet d'indiquer le fichier d'index par défaut. Sous Apache, il s'agit généralement d'«index.html» tandis que sous IIS, c'est «default.html».  
ErrorDocument valeur Ce paramètre permet d'indiquer un code d'erreur personnalisé du serveur Web.  
ForceType valeur Ce paramètre permet de forcer l'utilisation du type MIME spécifié par tous les répertoires et fichiers.  
Order valeur Ce paramètre permet d'indiquer l'ordre de priorité des paramètres Allow, Deny,...  
Require valeur Ce paramètre permet d'indiquer que seul l'utilisateur spécifié a le droit d'y accéder.  
RewriteBase valeur Ce paramètre permet d'indiquer l'URL de base pour la réécriture de répertoire.  
RewriteCond valeur Ce paramètre permet d'indiquer une condition à appliquer à un URL.  
RewriteEngine valeur Ce paramètre permet d'indiquer s'il vaut activer la réécriture URL.  
RewriteRule valeur Ce paramètre permet d'indiquer une règle à appliquer à un URL. Voici les drapeaux de règles indiquant entre les braquets (on peut les combiner en les séparants par des virgules) :  
Valeur Description
L Cette valeur permet d'indiquer si la règle s'applique, qu'aucune autre règle n'est appliqué après celle-ci. Il est conseillé de mettre cette option pour accélérer le traitement si vous n'avez pas de combinaison de règle.
NC Cette valeur permet d'indiquer qu'il ne faut pas de différence entre les majuscules et minuscules.
NS Cette valeur permet d'indiquer qu'il ne faut pas appliquer la règle aux sous-requêtes.
QSA Cette valeur permet d'indiquer qu'il faut supprimer la partie correspondante de la requête (indiqué généralement par «?»).
R Cette valeur permet d'indiquer qu'il faut demander une redirection au navigateur Web.
R=301 Cette valeur permet d'indiquer qu'il faut demander une redirection permanente au navigateur Web. Si vous risquez de changer cette redirection dans quelques heures, jours, semaine ou mois, vous devriez plutôt utiliser une redirection temporaire.
R=302 Cette valeur permet d'indiquer qu'il faut demander une redirection temporaire au navigateur Web.
... ...
Satisfy valeur Ce paramètre permet d'obliger un utilisateur à satisfaire une ou plusieurs conditions.  
SetEnv valeur Ce paramètre permet de fixer des variables d'environnement pour les interpréteurs de script comme PHP.  
SSLRequireSSL Ce paramètre permet d'indiquer qu'il faut uniquement accepter le HTTPS et refuser le HTTP mod_ssl
SSLVerifyClient valeur Ce paramètre permet d'indiquer qu'il faut effectuer une vérification SSL du côté client. La valeur par défaut est «none». Les valeurs autorisées sont : mod_ssl
Valeur Description
none Cette valeur permet d'indiquer qu'aucun certificat n'est requis pour tous.
optional Cette valeur permet d'indiquer que le client peut présenter un certificat valide.
require Cette valeur permet d'indiquer que le client doit présenter un certificat valide.
optional_no_ca Cette valeur permet d'indiquer que le client peut présenter un certificat valide, sans toutefois le vérifier.

Remarques

Exemples

##Redirection du dossier /asp vers www.gladir.com/CODER/ASP/
RewriteEngine On
RewriteRule ^asp$ http://www.gladir.com/CODER/ASP/ [R=301,L]

Voici un autre exemple permettant de transformer l'URL suivant «http://www.gladir.com/infoletter-formulaire/?error=login» sous la forme «http://www.gladir.com/index.php?controllerName=newsLetter&action=ns&error=login» :

RewriteCond %{QUERY_STRING} ^error=login$
RewriteRule ^infoletter-formulaire/$ index.php?controllerName=newsLetter&action=ns&error=login [L]

Voici un exemple permettant de rediriger tous les liens de «gladir.ca» vers «gladir.com» en conservant les chemins de l'URL s'il est situé dans la racine du site Web :

RewriteEngine On
RewriteCond %{HTTP_HOST} ^([\w-]+\.)*gladir\.ca$ [NC]
RewriteRule (.*) http://%1gladir.com/$1 [L,NC,QSA,R=301]

L'exemple suivant permet de refuser tous les IP sauf le «localhost» :

<Limit GET POST>
order deny,allow
deny from all
allow from 127.0.0.1
</Limit>

L'exemple suivant permet de refuser tous les IP sauf le réseau local (si vous utilisé une plage réseau entre 192.168.0.0. et 192.168.255.255) :

<Limit GET POST>
order deny,allow
deny from all
allow from 192.168.
</Limit>

L'exemple suivant permet d'effectuer une redirection vers http vers https :

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

L'exemple suivant permet d'effectuer une redirection vers http si vous êtes sur du https :

RewriteCond %{HTTPS} on
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

L'exemple suivant permet d'effectuer une redirection vers http sur des entêtes https sont rencontrées :

RewriteCond %{HTTP:X-Forwarded-Proto} https
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

L'exemple suivant permet d'indiquer qu'il faut effectuer une redirection de tous les https vers http sauf pour les dossiers «/admin» et «/secure» :

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^(/admin/|/secure/)([\w-]+\.)* [NC]
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

L'exemple suivant permet de rediriger tous le site «gladir.ca» vers «gladir.com» en conservant les adresses URL à l'exception de la page «nagios.php» situé dans la racine :

RewriteEngine On
RewriteCond %{HTTP_HOST} ^([\w-]+\.)*gladir\.ca$ [NC]
RewriteCond %{REQUEST_URI} !^/nagios\.php [NC]
RewriteRule (.*) http://%1gladir.com/$1 [L,NC,QSA,R=301]

L'exemple suivant permet de rediriger uniquement le lien suivant «http://www.gladir.com/dossiers/index.php?id=32» vers «http://www.gladir.com/CODER» :

RewriteCond %{QUERY_STRING} ^id=32$
RewriteRule ^dossiers/index\.php$ /CODER? [R=301,L]

L'exemple suivant permet de provoquer une redirection vers une page de maintenance uniquement pour les réseaux domestiques (192.168.0.x) :

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REMOTE_ADDR} !127\.0\.0\.1
RewriteCond %{REMOTE_ADDR} !192\.168\.
RewriteRule (.php) page-maintenance/index.html [L]

</IfModule>

L'exemple suivant permet de rediriger la page d'accueil de «monsitea» vers une page spécifique «/Nouvelles/» (redirect only root) et les autres liens reste inchangé à l'exception du nom de domaine remplaçant «monsitea» par «monsiteb» (redirect not root) :

RewriteCond %{HTTP_HOST} ^([\w-]+\.)*monsitea\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/$
Rewriterule ^(.*)$ http://www.monsiteb.com/Nouvelles/ [L,R=301]

RewriteCond %{HTTP_HOST} ^([\w-]+\.)*monsitea\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/$
RewriteRule (.*) http://%1monsiteb.com/$1 [L,NC,QSA,R=301]

L'exemple suivant permet d'interdire les appels externes au site Web sur l'API XML-RPC de WordPress :

RewriteCond %{HTTP_HOST} !localhost
RewriteRule /xmlrpc.php - [R=403,NC,L]

Voir également

Index des extensions de fichier - Format de fichier : .htpasswd
Index des extensions de fichier - Format de fichier : httpd.conf
Références des codes d'erreurs - 500 Internal Server Error
Langage de programmation - Perl - Les expressions régulières
Articles - Redirection Web

Dernière mise à jour : Samedi, le 13 juin 2015