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.

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.

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

5°) Je rajoute un code dans le fichier.
6°) J’enregistre les modifications

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 WordPressVous 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.

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