Tous les services opérationnels Devise EUR Aucun frais de mise en service Vous êtes à La Réunion ?
‹ Hébergement web et Plesk

Le fichier .htaccess : à quoi il sert

Le fichier .htaccess est un fichier de réglages qu'Apache lit dans chaque dossier d'un site. Il sert à rediriger des adresses, réécrire les liens (c'est lui qui donne à WordPress ses adresses lisibles), protéger un dossier par mot de passe ou choisir une page d'erreur. Ses règles valent pour son dossier et ses sous-dossiers, dès la requête suivante, sans redémarrer le serveur. Son nom commence par un point : il est caché par défaut.

Par Jonathan Dewaele · publié le

Ce que dit la documentation d'Apache

La documentation d'Apache sur les fichiers .htaccess les décrit comme des fichiers de configuration répartis, dossier par dossier. Trois points comptent pour un site :

  • La portée : les directives s'appliquent au dossier qui contient le fichier et à tous ses sous-dossiers. Un .htaccess placé plus bas peut modifier ce qu'a fixé un .htaccess plus haut.
  • L'autorisation : Apache ne lit ces fichiers que si l'hébergeur l'a permis, par la directive AllowOverride. Avec AllowOverride None, le fichier est ignoré sans message.
  • Le coût : le fichier est relu à chaque requête. Apache recommande donc de placer les réglages dans la configuration du serveur quand on y a accès, ce qui n'est pas le cas sur un hébergement partagé.

À quoi il sert, en pratique

UsageDirectivesPour aller plus loin
Rediriger une page ou un siteRedirect, RewriteRuleRedirection 301
Réécrire les adresses de WordPressRewriteRuleci-dessous
Choisir une page d'erreurErrorDocumentdocumentation d'Apache
Protéger un dossier par mot de passeAuthType, Requiredocumentation d'Apache

Un exemple, pour une page d'erreur personnalisée :

ErrorDocument 404 /page-introuvable.html

Le .htaccess de WordPress

WordPress écrit lui-même un bloc dans le .htaccess du dossier racine pour ses permaliens, les adresses lisibles. La documentation de WordPress donne le bloc par défaut, utile pour réparer un fichier abîmé :

# BEGIN WordPress

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

Vos propres règles se placent au-dessus de ce bloc, pour qu'elles s'appliquent avant celles de WordPress. Une extension qui réécrit le fichier peut l'abîmer : gardez une copie avant toute modification.

Modifier le fichier

  1. Ouvrez le gestionnaire de fichiers de Plesk et allez dans le dossier racine du site.
  2. Si le fichier n'apparaît pas, affichez les fichiers cachés : son nom commence par un point.
  3. Téléchargez une copie du fichier avant de le modifier.
  4. Ouvrez-le dans l'éditeur, faites la modification, enregistrez.
  5. Rechargez le site. Si une erreur 500 apparaît, une ligne est mal écrite : remettez la copie, puis cherchez la ligne en cause dans le journal d'erreurs, comme l'explique Erreur 500 : comprendre et corriger.

Chez Hubspace

Nos hébergements placent nginx devant Apache, et Apache lit les fichiers .htaccess : les règles de WordPress et vos redirections fonctionnent sans adaptation, y compris pour un ancien fichier statique, puisque la requête passe par Apache avant d'être servie. Les réglages de PHP, en revanche, ne se changent pas par le .htaccess chez nous : ils se modifient sur demande, comme l'explique Les limites PHP : mémoire, taille d'envoi.

Questions fréquentes

Mon .htaccess ne fait rien : pourquoi ?

Soit le serveur ne lit pas ces fichiers (AllowOverride None), soit le fichier n'est pas dans le bon dossier ou porte un autre nom. La documentation d'Apache propose un test : écrire un mot qui n'existe pas dans le fichier ; si la page ne passe pas en erreur 500, le fichier n'est pas lu.

Le .htaccess fonctionne-t-il avec nginx ?

nginx seul ne lit pas les fichiers .htaccess. Quand nginx est placé devant Apache, comme chez nous, c'est Apache qui les applique.

Où placer une redirection du domaine entier ?

Dans le .htaccess du dossier racine, au-dessus du bloc WordPress. Les exemples sont dans Redirection 301.

Articles liés