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_rewriteactivé. - 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 :
- Utilisez l'outil curl en ligne de commande :
curl -I https://monsite.fr/ancienne-page - Utilisez un vérificateur de headers HTTP en ligne (ex : Redirect Checker).
- Vérifiez dans Google Search Console que les erreurs ont disparu.
- 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.