• Temps de lecture :6 mins read

Qu'est-ce qu'un fichier htaccess ?

Un fichier htaccess permet de définir certaines règles de fonctionnement d’un site Internet.

Sa première fonction dans WordPress est de modifier l’adresse Internet des pages du site, ce qu’on appelles les permaliens.

Grâce au fichier .htaccess, vous allez notamment pouvoir :

  • Améliorer la sécurité et la vitesse de chargement d’un site
  • Ajouter des redirections de page
  • Bloquer les spam

Précautions avant de commencer

Faites une copie du fichier htaccess d’origine ou téléchargez-le sur votre ordinateur.

Pourquoi faire cela ?

Sachez que certains bouts de code que l’on va insérer dans votre fichier htaccess peuvent ne pas être supportés par votre hébergeur.

Si cela se produit, une erreur 500 « Internal Server Error » s’affichera à l’écran au lieu du contenu de vos pages.

En cas de problème, vous pourrez restaurer facilement avec le fichier d’origine.

erreur 500

Créer un fichier htaccess

Où mettre les htaccess ?

Par défaut, votre site WordPress contient un htaccess à la racine de votre site.

Mais, il peut contenir plusieurs htaccess à des endroits stratégiques :

  • la racine du site.
  • dossier wp-admin
  • dossier wp-includes
  • dossier wp-content
  • dossier wp-content/uploads.

Chaque fichier htaccess agira dans le répertoire dans lequel il se trouve et ses sous-répertoires.

Comment modifier le htaccess ?

Il existe des extensions WordPress qui permettent de modifier le fichier htaccess à la racine de votre site.

Je préfère le faire directement avec un éditeur de code :

  • soit par l’outil de votre hébergeur
  • soit avec un logiciel sur votre ordinateur (Notepadd++ par exemple même si un bloc-notes suffirait).

Pour cet article, je vous montre 2 manières.

Directement chez l'hébergeur

may6.fr est hébergé chez O2switch, un excellent hébergeur français.

1°) J’ouvre donc ma console CPanel pour accéder au Gestionnaire de fichiers (l’équivalent d’un logiciel ftp)

2°) Je me rends dans le répertoire racine de mon site WordPress.

3°) Comme vous pouvez le voir, j’ai un fichier .htaccess. Je le télécharge sur mon ordinateur.

copie htaccess origine

4°) J’ouvre mon fichier .htaccess avec léditeur de code intégré à mon hébergeur.

Modification htaccess

5°) Je rajoute un code dans le fichier.

6°) J’enregistre les modifications

editeur code

7°) Sur mon navigateur Internet, j’actualise mon site WordPress.

  • Soit vous voyez le contenu de votre site, alors vous pouvez repasser à l’étape 5 pour ajouter un nouveau bout de code
  • Soit vous avez une page d’erreur 500, il faudra enlever le code que vous avez ajouté précédemment.

Modification en local sur votre ordinateur

1°) Allez dans votre Gestionnaire de fichiers de l’hébergeur ou utilisez un logiciel ftp pour télécharger le htaccess d’origine.

2°) Sur votre ordinateur, faites-en une copie et renommez la htaccess-origine (elle servira en cas de problème).

3°) Ouvrez le fichier .htaccess avec le Bloc-notes ou un logiciel spécifique (ex : Notepad++)

4°) Ajoutez le code désiré et sauvegardez le fichier.

5°) Remettez votre fichier dans votre hébergement.

6°) Vérifiez si votre site WordPress marche toujours sur votre navigateur Internet ou si vous avez une page d’erreur 500.

Les codes utiles du htaccess à la racine du site

Voici la partie qui vous intéresse le plus, quels sont les codes à insérer dans votre(vos) fichier(s) htaccess ?

Base du fichier .htaccess à la racine du site

Quand vous installez WordPress su un hébergement il ajoute le code suivant à votre .htaccess à la racine du site :

# BEGIN WordPress

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

# END WordPress

Vous n’aurez pas besoin de toucher à cela. Tous les codes suivants sera à insérer avant #END WordPress.

Désactiver l'affichage des répertoires

La navigation dans les répertoires peut être utilisée par des pirates pour voir si vous avez des vulnérabilités , afin qu’ils puissent en profiter pour attaquer votre site.

repertoire
Ajoutez donc ce code pour bloquer l’affichage :
# Désactiver l'affichage des répertoires
Options All -Indexes

Cacher les informations du serveur

Vos pages peuvent contenir des informations de votre serveur. Cela est donc un danger potentiel.

Il est donc conseillé de les cacher :

# Masquer les informations du serveur
ServerSignature

Empêcher l'accès aux fichiers sensibles

Certains fichiers de configuration ne doivent jamais tomber dans les mains de pirates car ils pourraient prendre le contrôle de votre site. Pour prévenir cette situation, on va les empêcher d’y avoir accès.

C’est le cas pour le fichier wp-config.php et votre .htaccess

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


# Protéger le fichier wp-config.php
<files wp-config.php>
order allow,deny
deny from all

Empêcher le vol de bande passante

Je m’explique. Certaines personnes sans scrupules peuvent afficher vos images sur leur propre site. Il y a déjà un problème de droit d’auteur.

Mais un deuxième problème peut se poser. S’il affiche vos images sur leur site avec l’adresse où sont stockées celles-ci sur votre serveur, à chacun de leur visiteur, ça chargera sur votre serveur, pas le leur.

Et ça ça peut-être dérangeant si vous n’avez pas la bande passante illimitée sur votre hébergement. Au bout d’un moment votre compte pourrait être suspendu.

Pour éviter cela, insérer ce code :

# Désactiver le hotlinking de vos images
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?votresite.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://fakeimg.pl/400x200/?text=Pas_touche_aux_images [NC,R,L]

N’oubliez pas de changer votresite.com par l’adresse de votre site Internet.

Limiter le spam de commentaires

Combien de fois avez-vous pu voir des commentaires sur des sites avec des liens Internet qui ne sont que des pubs (voire plus dangereux) ?

Le code suivant ne bloque pas tous les spams mais en en limite grandement les effets :

# É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>

Les autres htaccess

Malgré les codes précédents, un pirate peut toucher votre site en chargeant l’un de vos fichiers WordPress.

C’est pour cela que l’on va créer d’autres fichiers htaccess à des endroits stratégiques.

dans wp-includes

Créez un nouveau fichier .htaccess dans le dossier wp-includes.

Collez le code suivant dans ce fichier pour éviter que des fichiers PHP ne soient chargés directement :

# Bloque les accès directs aux fichiers PHP (Merci à Sucuri)
<Files wp-tinymce.php>
 allow from all
</Files> <FilesMatch "\.(?i:php)$">
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch>
<Files wp-tinymce.php>
Allow from all
</Files>
<Files ms-files.php>
Allow from all
</Files>

dans wp-content

# Bloque les accès directs aux fichiers PHP (Merci à Sucuri)
<FilesMatch "\.(?i:php)$">
  <IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
  </IfModule>
<IfModule mod_authz_core.c> Require all denied </IfModule>
</FilesMatch>

dans wp-content/uploads

# Bloque les accès directs aux fichiers PHP (Merci à Sucuri)
<FilesMatch "\.(?i:php)$">
  <IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
  </IfModule>
<IfModule mod_authz_core.c> Require all denied </IfModule>
</FilesMatch>

Conclusion

Voici pour mes codes préférés.

Il en existe encore pleins d’autres pour la sécurité mais aussi pour améliorer la vitesse de votre site Internet.

Pour en savoir d’avantage, je vous invite à visiter un excellent article de WP Marmite, qui est pour moi la référence francophone sur WordPress.