Définir un fichier .htaccess optimisé pour WordPress

Le fichier .htaccess se situe à la racine de votre site web. Il permet de donner des instructions sur les modalités d’accès au contenu de votre site grâce à des fichiers de configuration spécifiques aux serveurs web Apache. Cela peut sous entendre des règles d’accès, de blocage, de cache, etc...

Qui dit « accès aux contenus » d’un site, dit « sécurisation ». Vous allez découvrir dans ce tutoriel, comment configurer votre fichier .htaccess pour sécuriser votre site WordPress d'éventuels pirates et comment améliorer ses performances.

htaccess-pour-WordPress

Voici le programme de ce tutoriel .HTACCESS pour WordPress :

Préambule: Notez qu’il est impératif de faire une sauvegarde du fichier .htaccess de votre site web avant toute modification. Il suffit d’une erreur de syntaxe ou l’oubli d’un signe pour rendre votre site inaccessible. Si cela se produit, vous serez en mesure d’uploader le fichier initial pour réinitialiser les réglages d'origine.
htaccess

Qu’est-ce qu'un fichier .htaccess ?

Le fichier htaccess (contraction de « Hypertext Access ») est un fichier de configuration pour Apache. Mais qu’est ce que Apache ?

Votre site web est hébergé sur un serveur. Ce serveur est probablement un serveur Apache puisqu’aujourd’hui, la moitié des sites internet utilisent des serveurs sous cette configuration.

Apache est en fait le logiciel qui va permettre aux internautes d’accéder à des pages web au format HTML et CSS, c’est à dire, un format que peuvent afficher les navigateurs. C’est grâce à lui que les requêtes formulées par les internautes sur votre site sont affichées correctement.

Par exemple, Marie consulte votre site internet et souhaite chercher les derniers aspirateurs disponibles. Elle tape dans la barre de recherche « aspirateurs ». Une requête est envoyée au serveur. Grâce au logiciel Apache, le serveur va être en mesure d’afficher la page des résultats des aspirateurs à Marie. Nous vous proposons le schéma ci-dessous pour illustrer l’exemple de Marie.

exemple de Marie

A quoi sert le fichier .htaccess ?

Le fichier htaccess sert principalement à protéger des répertoires par des mots de passes, créer des redirections ou encore des pages d’erreurs (type 401,404…). Il permet également d’agir sur certains critères favorables au développement d’une stratégie de référencement naturel solide.

Nous vous proposons ci-dessous une liste non-exhaustive des actions que vous pouvez mettre en place grâce à votre fichier htaccess :

  • Rediriger vers d’autres URLs : pour faire des 301, 302, etc...
  • Protéger l’accès à certains contenus : Par exemple la création d’un mot de passe pour accéder à des dossiers serveur
  • Bannir une adresse IP : Pour bannir un concurrent mal intentionné qui laisse des commentaires sur votre blog WordPress
  • Créer des redirections : Lors du passage d’un site en http vers https ou lors d’une maintenance
  • Forcer certains événements : Par exemple le téléchargement de certains fichiers ou la mise en cache de votre site
  • Changer les URLs définies automatiquement sur WordPress (plus connu sous le nom de permaliens)

Certaines de ces actions ont un impact sur votre référencement naturel. Premièrement, la mise en cache de votre site dans le navigateur de vos internautes vous permet d’optimiser le temps de chargement du site à leur prochaine visite.

Deuxièmement, les URLs font parties des critères techniques à optimiser dans le cadre d’une stratégie de référencement et il peut être intéressant de les modifier à travers votre fichier htacces en y incorporant des mots clés.

Où trouve-t-on le fichier .htaccess dans WordPress ?

Généralement votre hébergeur/WordPress installe automatiquement un fichier .htaccess sur votre site/blog à sa création. Il se trouve à la racine de votre site web. Rendez-vous sur votre client FTP pour identifier son emplacement :

emplacement htaccess

Il vous suffit de faire clic droit sur le fichier et vous pourrez le télécharger, l’éditer ou le visualiser. Vous pouvez le modifier grâce à un éditeur de texte classique.

Vous pouvez aussi agir sur votre fichier via votre Dashboard WordPress mais vous serez limité. Pour cela, il faut vous rendre dans les réglages des permaliens (voir capture ci-dessous).

permaliens wordpress

Lorsque vous changez ces paramètres, de nouvelles lignes sont automatiquement créées par WordPress dans votre fichier .htaccess. Logique, puisque nous avons vu qu’il nous permet d’agir sur les URLs.

Pour agir sur les commandes de votre fichier .htaccess, vous pouvez également utiliser l’extension gratuite proposée sur le répertoire WordPress.

Notez que contrairement à certains fichiers de votre serveur (robots.txt, sitemaps…), le « . » du fichier « .htaccess », signifie que c’est un fichier caché. Il est visible uniquement via des clients FTP qui force l’affichage des fichiers cachés.

Créer un fichier .htaccess pour WordPress

Etape 1 : comprendre la configuration WordPress par défaut

Lorsque je télécharge le fichier .htaccess à partir de mon serveur sur lequel est hébergé mon site WordPress, voici la configuration qui s’affiche par défaut :

configuration htaccess par défaut

Détaillons ensemble la signification des lignes de ce fichier :

Le caractère « # » désigne les commentaires et n’agit pas sur la configuration établie.

#BEGIN WordPress
#END WordPress

Ces commentaires indiquent le début et la fin du code par défaut de WordPress.

<IfModule mod_rewrite.c>
</IfModule>

Ces deux balises sont exécutées, uniquement si votre hébergeur Web autorise la réécriture d’URLs. Les hébergeurs comme OVH le propose d’office.

mod_rewrite.c

C’est le nom d’un module complexe d’Apache. C’est grâce à lui que vous pouvez manipuler les URLs.

RewriteEngine On

La directive RewriteEngine active ou désactive l'exécution du moteur de réécriture. Si vous mettez Off, aucune des règles que vous aurez spécifié seront activées.

RewriteBase /

Cette balise indique où se trouve la racine de votre site web. Si vous l’avez placé dans un sous dossier tel que www, alors vous écrirez « RewriteBase /www/ ».

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Avant de rentrer dans les détails de ce code, nous souhaitons vous expliquer en quoi consiste le fichier concerné : « index.php ».

Il s’agit du fichier vers lequel sont redirigés tous les accès lorsque votre internaute ne consulte pas un fichier réel (PDF, image…). index.php est en réalité le script qui permet d’aller chercher dans votre base de données les enregistrements qui correspondent aux « ID » des pages et de vos articles pour pouvoir les afficher à l’internaute.  Notez que cette règle se définit justement grâce au code: ^index\.php$ - [L]

%{REQUEST_FILENAME}

Dans le langage de l’outil Apache, « %{} » détermine une variable. Ici il s’agit de la variable indiquant le chemin exact du fichier dans la base de données de votre serveur.

!-f / !-d

« f »  représente un fichier et « d » un répertoire. Le point d’exclamation permet d’ajouter une négation pour indiquer que ces fichiers ne devront pas être concernés par le code qui suivra.

RewriteRule . /index.php [L]

RewriteRule demande la réécriture de l’expression régulière (« . ») par l’adresse /index.php. Cette règle ne s’applique ni aux fichiers ni aux répertoires réels grâce au code précédent ».

Etape 2 : définir les éléments importants pour WordPress

Définissions ensemble les éléments importants que nous allons mettre en place dans notre fichier .htaccess optimisé pour WordPress.

  1. Des éléments de sécurisation
  • « wp-config.php » : l’un des fichiers les plus sensibles sur votre site web. Il contient les informations relatives à votre base de données.
  • Les répertoires de votre site : N’importe qui peut accéder au contenu de votre serveur avec l’url de votre site et le nom d’un répertoire. Vous pouvez modifier ces règles.
  • Les informations sur votre hébergeur et votre serveur : Bloquer l’accès à de potentiels hackers en masquant les éléments spécifiques de votre serveur.
  • Le fichier .htaccess : Il est possible et conseillé de le protéger
  • Les informations sur les auteurs : Masquer leurs identifiants et informations si vous travaillez sur un blog collaboratif
  • Les commentaires spams : Vous pouvez adopter une stratégie solide pour réduire les spams de commentaires en alliant le fichier .htaccess à l’extension Akismet.
  • Restrictions utilisateurs : Vous pouvez restreindre l’accès à votre site en déterminant les IP concernées.
  1. Des éléments favorables au SEO
  • La mémoire cache : elle permet à l’internaute d’utiliser le cache du navigateur pour afficher votre site plus rapidement lors de son prochain passage. Le temps de chargement d’un site est un élément capital pour assurer une expérience utilisateur satisfaisante et le développement de votre visibilité sur les moteurs de recherche.
  • Les URLs : pour les redéfinir ou faire des redirections (301 ou 404 par exemple).

Etape 3 : une configuration optimisée pour WordPress.

La configuration suivante est établie pour un site WordPress classique, sans spécificités particulières (multi-sites, sous domaines…). Si vous souhaitez plus d’informations sur les différentes configurations qui existent par défaut, n’hésitez pas à vous rendre sur la page https://codex.wordpress.org/.

Chacun des codes mis en place ici sont expliqués grâce à des commentaires. Pour terminer, pensez à bien vérifier le fonctionnement de votre fichier .htaccess en réalisant des tests dans votre navigateur. Testez notamment les accès, les redirections et la non-disponibilité des répertoires.

#Par défaut sous WordPress

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
 RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /index.php [L]
</IfModule>
# END WordPress

#Sécurisons d'abord notre site :

#Blocage de la visibilité du fichier wp-config.php
<Files wp-config.php>
order allow,deny
deny from all
</Files>
#Fin du blocage

#Interdiction de visualisation des repertoires du site :
Options All -Indexes

# Masquer les informations relatives au serveur :
ServerSignature Off

# Protéger .htaccess et .htpasswds
<Files ~ "^.*\.([Hh][Tt][AaPp])">
order allow,deny
deny from all
satisfy all
</Files>

# Masquer l'identification d'un auteur
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^author=([0-9]*)
RewriteRule .* - [F]
</IfModule>

# Éviter le spam de commentaires
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.monsite.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>

#Limiter l'accès au site à certains utilisateurs - Il faudra remplacer xxx.xxx.xxx.xxx par l'adresse IP
<Limit GET POST>
order allow,deny
deny from xxx.xxx.xxx.xxx
allow from all
</Limit>

#Optimisons les éléments favorables au référencement naturel

#Retirer l'expression "category" de vos urls
RewriteRule ^category/(.+)$ https://www.yourblog.com/$1 [R=301,L]

#Autoriser l'utilisation du cache
<Ifmodule mod_expires.c>  
<filesmatch "\.(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</filesmatch> </ifmodule>

#Rediriger les internautes vers une page de maintenance - Lorsque vous faîtes des modifications
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L]

#Installer une redirection 301
Redirect 301 /www.monsite.com/monanciennepage.com /
 https.monsite.com/manouvellepage.com

 

Voilà cet article tutoriel sur .htaccess est à présent terminé, j'espère que ce fichier vous paraîtra désormais plus accessible et ouvrira le champ du possible pour vos besoins.

Définir un fichier .htaccess optimisé pour WordPress
4.8 pour 17 votes

A propos de l'auteur...

WP Formation

Fabrice Ducarme, spécialiste & formateur WordPress je suis éditeur, auteur et fondateur de WP Formation.com. Conférencier lors des WordCamp Paris 2013 & 2015, Marseille 2017 et au WP Tech Nantes 2014, je vous propose plus de 450 articles & tutoriaux à propos de WordPress, mes trucs & astuces mais aussi des coups de gueule…

1 commentaire

  • sangoku38 dit :

    Il est très facile de scraper l’adresse email du webmaster d’un site ou de savoir quel technologie il utilise sur son site (via extension Chrome par exemple), est-ce que tu connais une solution pour bloquer cela via htaccess ?

WP Formation ne peut malheureusement pas répondre à toutes vos demandes de support
mais si vous aimez nos contenus, merci de liker notre page Facebook ;)

Vous pouvez laisser votre commentaire ci-dessous et même vous abonner aux commentaires de l'article.
Nota: pour le champ "Site Web", seuls les liens vers vos réseaux sociaux sont autorisés.

Likez, Tweetez, Commentez, Partagez !

114 Partages
Partagez45
Tweetez48
Partagez15
Buffer6