.htaccess WordPress : les 10 extraits indispensables (avec générateur)
Tôt ou tard, un tutoriel vous glisse un « ajoutez ceci à votre .htaccess », puis passe à autre chose. Voici l'aide-mémoire complet : à quoi sert vraiment ce fichier, ce à quoi il ne faut jamais toucher, et les dix extraits qui tournent en production, prêts à copier ou à générer en quelques clics.
Le fichier dort à la racine de votre installation, et la plupart du temps personne ne l'ouvre. Il décide pourtant de la façon dont votre serveur répond avant même que WordPress ne démarre : redirections, cache, en-têtes, accès refusés. Cet article rassemble les dix extraits de .htaccess pour WordPress qui tournent vraiment sur des sites en production, expliqués un par un, avec le code exact et l'endroit précis où le coller. Et si cocher des cases vous tente plus que de taper des lignes, le générateur de .htaccess gratuit assemble le fichier complet à votre place.
À quoi sert le fichier .htaccess
Le .htaccess est un fichier de configuration en texte brut, posé à la racine de votre installation WordPress, au même niveau que wp-config.php. Le serveur web le relit à chaque requête. Vous pouvez donc changer des redirections, du cache ou des en-têtes HTTP sans toucher à la configuration globale du serveur et sans redémarrer quoi que ce soit. Sur une offre mutualisée, c'est souvent le seul levier que votre hébergeur vous laisse entre les mains.
Voici la nuance qui manque à beaucoup de tutoriels : le .htaccess ne fonctionne que sur Apache et, pour les directives courantes, sur LiteSpeed, qui le lit de façon compatible. Si votre hébergement tourne sur Nginx, le fichier n'est ni cherché ni traité, et les mêmes règles doivent être écrites dans le bloc server de nginx.conf, avec une autre syntaxe. Beaucoup d'offres mutualisées pensées pour WordPress tournent sous Apache ou LiteSpeed, mais ne le supposez pas pour la vôtre : un coup d'œil au panneau d'administration de votre hébergement, ou un message au support, vous donne la réponse en deux minutes. C'est la première chose à vérifier avant de copier quoi que ce soit.
Le bloc écrit par WordPress : ne pas y toucher
Ouvrez le .htaccess de n'importe quelle installation WordPress qui utilise des permaliens lisibles, vous tomberez sur ce bloc, en général tout en haut du fichier.
# BEGIN WordPress
# Les directives (lignes) entre "BEGIN WordPress" et "END WordPress" sont
# générées dynamiquement et ne doivent être modifiées que via les filtres WordPress.
# Toute modification apportée aux directives entre ces marqueurs sera écrasée.
<IfModule mod_rewrite.c>
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]
</IfModule>
# END WordPress
Ce bloc envoie toutes vos URL lisibles, /blog/mon-article/ au lieu de /?p=123, vers index.php, qui décide ensuite quoi afficher. WordPress le régénère automatiquement à chaque enregistrement des réglages de permaliens : une retouche manuelle à l'intérieur peut donc disparaître sans prévenir au prochain clic sur « Enregistrer ». La règle tient en une phrase : tout ce que vous ajoutez vous-même se place en dehors de ce bloc, en pratique juste avant # BEGIN WordPress. Le texte des commentaires change selon la langue de votre installation, seuls les marqueurs BEGIN et END comptent.
Assemblez votre .htaccess en quelques clics
Plutôt que d'écrire les règles à la main, cochez les modules dont vous avez besoin : le générateur produit un fichier commenté, prêt à copier ou à télécharger. Tout se passe dans votre navigateur, rien n'est envoyé sur un serveur.
Les 10 extraits .htaccess les plus utiles pour WordPress
Tous les extraits qui suivent se placent en dehors du bloc # BEGIN WordPress / # END WordPress, juste avant lui. Copiez-les un par un, ou laissez le générateur de .htaccess pour WordPress les combiner pour vous : il s'occupe de l'ordre et des commentaires, ce qui évite les erreurs de syntaxe au moment de tout coller ensemble.
1. Forcer le HTTPS
Toute requête qui arrive en http bascule définitivement, en 301, vers la version https. Il faut évidemment un certificat SSL actif sur le domaine. La règle ne répare pas pour autant les images, scripts ou feuilles de style que vos pages appellent encore en http : tant qu'il reste ce contenu mixte, le navigateur continue de signaler la page comme non entièrement sécurisée. Vérifiez aussi si votre hébergeur ne force pas déjà le HTTPS côté serveur : dans ce cas, cette règle n'ajouterait qu'un saut de redirection inutile.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
2. Choisir entre www et sans www
Pour Google, www.votre-domaine.fr et votre-domaine.fr sont deux adresses différentes. Sans règle claire, vos liens entrants et vos signaux de référencement peuvent se répartir entre les deux versions au lieu de s'additionner. Cet extrait redirige www vers la version sans www. Dans l'autre sens, il ne suffit pas d'inverser la condition : la règle de réécriture doit aussi replacer le préfixe www devant le domaine.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ %{REQUEST_SCHEME}://%1%{REQUEST_URI} [L,R=301]
</IfModule>
3. Redirections 301 permanentes
Pour une page déplacée ou deux contenus fusionnés, une ligne par règle suffit. Passé une poignée de redirections, le fichier devient vite illisible, et un mauvais code de statut fait perdre à l'ancienne adresse le bénéfice qu'elle avait en référencement. Si vous en gérez plusieurs dizaines, une extension reste nettement plus confortable : notre comparatif Alternative à Redirection détaille ce que cela change au quotidien.
<IfModule mod_alias.c>
# Redirige une ancienne adresse vers la nouvelle
Redirect 301 /ancienne-page https://votre-domaine.fr/nouvelle-page
</IfModule>
4. Cache navigateur
Les fichiers statiques, feuilles de style, images ou polices, changent rarement. Cette règle indique au navigateur combien de temps il peut les réutiliser au lieu de les redemander à chaque page. Le gain se voit surtout sur les visites répétées d'une même personne. Le HTML en est volontairement exclu : son contenu change en permanence.
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
</IfModule>
5. Compression GZIP
Les fichiers texte, HTML, CSS, JS et JSON, se compriment souvent de 60 à 80 % avant d'être envoyés au navigateur. Visuellement, rien ne change. L'effet se remarque surtout sur les gros fichiers CSS et JS, et la charge supplémentaire pour le serveur reste marginale.
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml
AddOutputFilterByType DEFLATE application/javascript application/json
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
6. En-têtes de sécurité
Quatre en-têtes HTTP qui réduisent la surface d'attaque de votre WordPress sans installer la moindre extension : le navigateur cesse de deviner les types de fichiers, votre site ne peut plus être chargé dans une iframe étrangère, l'adresse de provenance circule moins, et l'accès à la caméra comme au micro est coupé par défaut. Gardez HSTS pour plus tard : les navigateurs mémorisent cette règle pendant des mois, et une erreur ne se rattrape pas en une après-midi.
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"
</IfModule>
7. Page 404 personnalisée
WordPress sert déjà son propre gabarit 404 via le thème actif. Cette ligne prend le relais quand l'erreur survient avant même que WordPress ne se charge, sur un fichier statique par exemple. Le fichier /404.html doit exister réellement à la racine, sinon Apache renvoie son propre message brut. Une page 404 avec navigation et champ de recherche retient les visiteurs au lieu de les laisser repartir aussitôt.
ErrorDocument 404 /404.html
8. Protection contre le hotlinking
Quand un autre site appelle vos images directement dans son propre HTML, c'est vous qui payez la bande passante, sans qu'un seul visiteur arrive chez vous. Cette règle laisse passer vos pages et les accès sans référent, depuis un favori par exemple, et bloque le reste. Remplacez votre-domaine.fr par votre vrai domaine.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?votre-domaine\.fr [NC]
RewriteRule \.(jpe?g|png|gif|webp|svg)$ - [F,NC,L]
</IfModule>
9. Désactiver le listage des répertoires
Quand le listage des répertoires reste actif, Apache affiche dans le navigateur le contenu complet d'un dossier dès qu'il n'y trouve ni index.html ni index.php, un vieux /uploads/2023/ oublié par exemple. Beaucoup d'hébergeurs le coupent déjà par défaut, mais rien ne vous le garantit : une seule ligne referme la porte pour de bon.
Options -Indexes
10. Bloquer l'accès aux dotfiles
Les fichiers cachés comme .env, .git ou un .htpasswd oublié n'ont rien à faire dans un navigateur, et ils atterrissent pourtant à la racine du site plus souvent qu'on ne le croit. Cette règle bloque tout ce qui commence par un point, avec une exception assumée pour .well-known, dont se servent notamment les validations de certificat SSL.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/" [NC]
RewriteRule "(^|/)\." - [F]
</IfModule>
Tester sans mettre votre site en danger
Ajoutez les extraits un par un, jamais tous d'un coup, et rechargez le site après chaque enregistrement. En cas de panne, vous saurez exactement quel extrait est en cause. Si votre hébergeur propose un environnement de préproduction, faites-y le premier essai. Et si le fichier devient ingérable, repartir d'une base propre est souvent plus rapide que de chercher la ligne fautive : le générateur .htaccess reconstruit un fichier commenté en quelques clics, que vous recollez au-dessus du bloc WordPress.
Un .htaccess propre, sans écrire une ligne
Le générateur combine ces dix modules pour vous, commente chaque bloc et vous prévient tant qu'aucun module n'est coché. Tout tourne dans votre navigateur, aucun envoi vers un serveur.
Des redirections sans toucher au serveur
Si ce que vous utilisez le plus dans le .htaccess, ce sont les redirections 301, Linkjet fait la même chose depuis le tableau de bord WordPress : cinq types de redirection, moniteur 404 et statistiques de clics enregistrées en local. Version gratuite, sans appel externe.
Questions fréquentes
Qu'est-ce que le fichier .htaccess dans WordPress ?
C'est un fichier de configuration en texte brut, situé à la racine de votre installation, que le serveur web relit à chaque requête. Il permet de définir des redirections, du cache, des en-têtes de sécurité et d'autres règles sans toucher à la configuration globale du serveur. WordPress y écrit lui-même un bloc pour les permaliens dès que vous enregistrez les réglages correspondants. Le fichier ne fonctionne que sur Apache et, de façon compatible, sur LiteSpeed.
Le .htaccess existe-t-il sur un hébergement Nginx ?
Non. Nginx ne lit aucun fichier .htaccess, même si vous en déposez un à la racine du site. Les mêmes règles, redirections, cache et en-têtes, doivent être écrites directement dans le bloc server de nginx.conf, avec une syntaxe différente de celle d'Apache. Si vous ne savez pas quel serveur fait tourner votre site, posez la question à votre hébergeur avant d'appliquer ces extraits.
Puis-je modifier le bloc # BEGIN WordPress ?
Ce n'est pas conseillé. WordPress génère et régénère ce bloc automatiquement à chaque enregistrement des réglages de permaliens, donc toute modification manuelle à l'intérieur peut disparaître sans avertissement. Placez toujours vos propres règles en dehors de ce bloc, en général juste avant lui. Elles s'exécutent alors en premier et survivent à tous les changements de permaliens.
Que se passe-t-il si je me trompe dans le .htaccess ?
Une erreur de syntaxe, une balise non fermée ou une directive mal écrite, peut faire tomber le site entier avec une erreur 500, visible par tous les visiteurs et pas seulement sur la partie concernée. C'est pourquoi il faut toujours copier le fichier existant avant d'y toucher : si quelque chose casse, renvoyer la copie par FTP dans le répertoire racine règle le problème en quelques secondes.
Comment créer un .htaccess pour WordPress sans écrire de code ?
Le générateur de .htaccess gratuit de hafenstudios s'en charge : vous cochez les modules dont vous avez besoin, HTTPS forcé, redirection www, redirections 301, cache, GZIP, en-têtes de sécurité ou protection anti-hotlinking, et le fichier commenté se construit en direct, prêt à copier ou à télécharger. L'outil fonctionne entièrement dans le navigateur, rien n'est transmis à un serveur. La règle reste la même : avant de remplacer votre .htaccess actuel, faites-en une copie.
Si les redirections sont votre besoin principal, le comparatif Alternative à Pretty Links montre à quoi ressemble la même gestion depuis WordPress. Et pour l'hygiène de base d'un site, tout commence par mettre à jour ses extensions WordPress.