Introduction au fichier .htaccess

Le fichier .htaccess (HyperText Access) est un fichier de configuration utilisé par les serveurs web Apache. Il permet de modifier le comportement du serveur à la volée, notamment pour gérer les redirections, réécrire les URLs et protéger des répertoires, sans avoir à modifier la configuration principale du serveur.

Important : ce fichier doit se trouver à la racine de votre site web ou dans le répertoire que vous souhaitez configurer. Faites toujours une sauvegarde avant de le modifier.

Prérequis

  • Un serveur web Apache avec le module mod_rewrite activé.
  • Un accès FTP ou SSH à votre hébergement.
  • Un éditeur de texte (VSCode, Notepad++, etc.).

Redirection simple d'une page : Redirect

La directive Redirect est la plus simple pour rediriger une URL vers une autre :

# Redirection 301 (permanente)
Redirect 301 /ancienne-page.html https://monsite.fr/nouvelle-page/

# Redirection 302 (temporaire)
Redirect 302 /promo-ete https://monsite.fr/offres/

Le premier argument est le code de statut, le second est le chemin source (relatif à la racine), et le troisième est l'URL de destination (absolue).

Redirection de domaine entier

Pour rediriger tout un domaine (par exemple, de HTTP vers HTTPS ou de www vers non-www) :

# HTTP vers HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

# www vers non-www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.monsite\.fr [NC]
RewriteRule ^(.*)$ https://monsite.fr/$1 [R=301,L]

Redirection avec RewriteRule : syntaxe expliquée

La directive RewriteRule offre beaucoup plus de flexibilité grâce aux expressions régulières. Voici les drapeaux les plus utiles :

  • [R=301] : effectue une redirection avec le code 301.
  • [L] : arrête le traitement des règles suivantes (Last).
  • [NC] : insensible à la casse (No Case).
  • [QSA] : préserve les paramètres de l'URL d'origine (Query String Append).

Exemples pratiques

Rediriger une extension de fichier

# Rediriger tous les .html vers leur équivalent sans extension
RewriteRule ^(.+)\.html$ /$1/ [R=301,L]

Rediriger un dossier entier

# Rediriger tout le dossier /blog/ vers /articles/
RewriteRule ^blog/(.*)$ /articles/$1 [R=301,L]

Supprimer index.php de l'URL

RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^index\.php$ / [R=301,L]

Tester vos redirections

Après avoir modifié votre .htaccess, vérifiez que vos redirections fonctionnent correctement :

  1. Utilisez l'outil curl en ligne de commande : curl -I https://monsite.fr/ancienne-page
  2. Utilisez un vérificateur de headers HTTP en ligne (ex : Redirect Checker).
  3. Vérifiez dans Google Search Console que les erreurs ont disparu.
  4. Testez depuis un navigateur en mode navigation privée pour éviter le cache.

Erreurs fréquentes

  • Erreur 500 : une faute de syntaxe dans le .htaccess provoque souvent cette erreur. Vérifiez chaque ligne.
  • Boucle de redirection infinie : assurez-vous que la destination n'est pas redirigée à son tour vers la source.
  • Module mod_rewrite désactivé : contactez votre hébergeur si les règles RewriteRule ne fonctionnent pas.