Je ne suis vraiment pas simple à comprendre : mon code par défaut ressemble à du chinois.
Je me signale par mon apparence singulière, car mon nom ne possède pas d’extension.
J’ai aussi des pouvoirs magiques. Si vous me paramétrez correctement, je suis capable des choses suivantes :
- améliorer la sécurité de votre site ;
- augmenter la vitesse de chargement de vos pages ;
- mettre en place des redirections ;
- limiter le spam ;
- et même faire des petites blagues : c’est mon côté taquin. 😉
Vous ne me connaissez pas encore ? Je suis le fichier .htaccess
de votre site WordPress. Faisons maintenant plus ample connaissance dans ce guide qui m’est consacré.
Tout au long de ces lignes, vous découvrirez plus de trente directives pour me configurer. Elles se matérialisent sous la forme de morceaux de code prêts à l’emploi, que vous n’aurez plus qu’à copier-coller chez vous.
Qu’est-ce qu’un fichier .htaccess ?
Le fichier .htaccess
est un fichier de configuration d’Apache, le logiciel qu’utilisent la majorité des serveurs web pour fonctionner. Le contenu de ce fichier va donner des directives à Apache pour que le serveur se comporte de telle ou telle manière.
Attention, certains hébergeurs tournent uniquement sur le serveur NGINX. C’est le cas de Flywheel, par exemple. Ils n’ont donc pas de fichier .htaccess
.
Quasiment tous les sites utilisant WordPress possèdent un fichier .
htaccess
. En effet, WordPress le crée automatiquement lors de l’installation, pour y inclure le paramétrage des permaliens du site.
Lorsque vous allez dans Réglages > Permaliens pour choisir un format d’URL (normalement « Nom de l’article »), le fichier .htaccess
est modifié.
Comment fonctionnent les fichiers .htaccess ?
Déjà, il faut savoir qu’un site peut posséder plusieurs fichiers .htaccess
.
Tout d’abord, il y a le fichier .htaccess
principal, situé à la racine du site.
La racine d’un site est l’endroit où se trouvent les fichiers de WordPress (dossiers wp-admin
, wp-includes
et wp-content
plus quelques autres fichiers) sur votre serveur. Vous pouvez y accéder en vous connectant à votre client FTP, par exemple. Le nom de ce dossier racine peut varier en fonction de votre hébergeur. Par exemple, il s’appelle public_html
chez o2switch (lien affilié) et www
chez OVH.
Le contenu du fichier
.htaccess
principal aura une influence sur l’ensemble du site.
D’autres fichiers .htaccess
peuvent être créés dans des sous-répertoires. Dans le cas de WordPress, on peut en placer un dans le répertoire wp-admin
ou wp-content/uploads
, par exemple.
Les fichiers .htaccess
secondaires auront une influence sur les répertoires dans lesquels ils sont situés, ainsi que dans leurs sous-répertoires.
Si on imagine qu’un fichier .htaccess
est présent dans wp-content/uploads
, le répertoire uploads
et tous ses sous-répertoires seront impactés par ce qui sera défini dans le fichier .htaccess
.
Comment créer un fichier .htaccess ?
Logiquement, votre site devrait avoir au moins un fichier .htaccess
, celui situé à la racine de votre site. Vous pouvez le modifier à l’aide de votre éditeur de code favori (Sublime Text, Brackets, Notepad++, Coda, etc.).
Il existe d’autres solutions, comme le plugin Htaccess File Editor, pour le modifier directement à partir de votre tableau de bord WordPress.
Mais, en cas de problème, il faudra passer par votre client FTP et votre éditeur de code, donc autant le faire directement à la main.
Si vous devez ajouter un fichier .htaccess
dans un sous-répertoire, suivez les instructions suivantes.
Créer un fichier .htaccess depuis votre ordinateur
- Créez un nouveau fichier texte et nommez-le
htaccess.txt
. - Éditez-le à votre guise.
- Envoyez-le à la racine de votre serveur.
- Renommez-le en
.htaccess
.
Créer un fichier .htaccess depuis votre serveur
- Faites un clic droit dans le répertoire où il devra se trouver.
- Ajoutez un nouveau fichier et nommez-le
.htaccess.
- Éditez-le avec votre éditeur de code (Notepad++, Coda, Sublime Text ou autre).
Félicitations, vous savez désormais à quoi sert un fichier .htaccess
et comment le créer. Avant de découvrir les directives que pouvez lui ajouter, pensez à soigner vos arrières !
Précautions d’usage avant de personnaliser un fichier .htaccess
Personnaliser le code d’un fichier .htaccess
est assez simple (surtout avec les morceaux de code que propose la suite de cet article), mais il ne faut tout de même pas y aller la fleur au fusil.
Avant toute modification, je vous conseille d’abord de réaliser une sauvegarde de votre site WordPress. Pour cela, vous pouvez vous servir d’une extension dédiée comme UpdraftPlus.
Ensuite, sauvegardez le contenu initial de votre fichier .htaccess
. Pour ce faire, vous pouvez :
- dupliquer le fichier
.htaccess
de votre serveur en un fichier.htaccess-initial
; - copier le contenu du fichier dans un fichier texte, sur votre ordinateur.
En cas de problème, vous pourrez restaurer facilement le contenu d’origine.
Comment modifier votre fichier .htaccess proprement ?
Pour effectuer des modifications, suivez la procédure suivante :
- ouvrez le fichier dans votre éditeur de code ;
- placez vos ajouts dans le fichier ;
- sauvegardez le tout ;
- actualisez votre site pour voir si tout va bien.
L’actualisation de votre site est très importante : elle permettra de voir si le code ajouté ne pose pas de problème.
En général, une erreur 500 « Internal Server Error » s’affichera à l’écran, en cas de problème :
Dans ce cas, annulez vos modifications et sauvegardez à nouveau. Tout devrait rentrer dans l’ordre.
Parfois, il arrive que certains hébergeurs n’acceptent pas tel ou tel code dans le fichier .htaccess
…
Il faut faire avec.
Contactez le support de votre hébergeur pour en savoir plus. Avec un peu de chance, il n’y aura besoin que d’une légère modification pour que ça fonctionne.
Cette fois, tout est bon. Vous savez comment fonctionne un fichier .htaccess
, comment le créer et le modifier correctement.
Découvrez à présent comment le personnaliser à 5 endroits différents :
- À la racine du site.
- Dans
wp-admin
. - Dans
wp-includes
. - Dans
wp-content
. - Dans
wp-content/uploads
.
Allez hop, on commence tout de suite par la racine du site. Vous allez voir, cela sera le morceau le plus consistant.
Comme dans la totalité des langages informatiques, le fichier .htaccess
permet d’inclure des commentaires. Pour cela, il suffit de placer le symbole #
en début de ligne pour que cette dernière soit ignorée. Cela est très pratique pour se souvenir de ce que réalisent des lignes de code. Vous aurez l’occasion de voir des commentaires dans les exemples de cet article.
Comment personnaliser le fichier .htaccess à la racine du site ?
Si votre installation s’est bien passée, vous trouverez un fichier .htaccess
à la racine de votre site. Il contiendra le code suivant :
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
Si vous utilisez WordPress en mode multisite, le code par défaut du fichier .htaccess
sera différent. Cela ne vous concernera pas dans la majorité des cas.
Maintenant que vous avez localisé ce fichier, vous allez pouvoir enrichir son contenu avec les morceaux de code ci-dessous pour obtenir des choses bien précises. Cela peut concerner la sécurité, mais aussi d’autres choses.
Veillez à ne pas inclure de code entre les commentaires # BEGIN WordPress
et # END WordPress
car il est possible que ce code soit modifié dans certains cas.
Nouvelle piqûre de rappel : sauvegardez votre fichier .htaccess
d’origine avant d’effectuer la moindre modification. Vous devez pouvoir revenir en arrière en cas de problème.
Désactiver l’affichage des répertoires
Par défaut, si vous essayez d’accéder aux répertoires d’un site, le serveur les affichera. La mise en forme ressemblera à ceci :
Vous vous doutez bien que c’est du pain bénit pour les pirates. Le fait qu’ils puissent voir les fichiers de votre site va les aider à mieux pouvoir l’attaquer. Insérez le code suivant dans votre fichier .htaccess
pour protéger votre site :
# Désactiver l'affichage du contenu des répertoires Options All -Indexes
Il est aussi possible d’utiliser ce code pour empêcher le listage des répertoires :
# Alternative pour empêcher le listage des répertoires IndexIgnore *
Cacher les informations du serveur
Chez certains hébergeurs, les pages affichées peuvent contenir des informations relatives au serveur. Ces informations peuvent donner des informations à d’éventuels assaillants.
Il est donc préférable de les masquer avec le code suivant :
# Masquer les informations du serveur ServerSignature Off
Activer le suivi des liens symboliques
Je dois vous parler chinois mais il est important d’insérer cette ligne de code dans votre fichier .htaccess
principal :
Activation du suivi des liens symboliques Options +FollowSymLinks
Grâce à cela, votre serveur pourra suivre ce que l’on appelle des liens symboliques, c’est-à-dire des raccourcis.
Mettre votre serveur à l’heure
Cela n’est pas vraiment important mais si votre serveur se trouve à l’étranger, vous pouvez lui indiquer de se caler sur votre fuseau horaire avec cette ligne de code :
# Choix du fuseau horaire SetEnv TZ Europe/Paris
Définir l’encodage des caractères par défaut
Le code suivant permet de définir l’encodage des caractères des fichiers texte et HTML en tant que UTF-8
(un codage de caractères informatiques). Sans cela, il y a des risques que les accents soient mal pris en compte.
# Encodage par défaut des fichiers textes et HTML AddDefaultCharset UTF-8
Protéger le fichier wp-config.php
Le fichier de configuration de votre site (wp-config.php
) contient les identifiants pour se connecter à la base de données.
C’est le fichier le plus sensible de votre site. Il peut être la cible d’éventuels pirates. Il est possible de le protéger en ajoutant ce code au fichier .htaccess
principal :
# Protéger le fichier wp-config.php <files wp-config.php> order allow,deny deny from all </files>
Protéger le fichier .htaccess lui-même
Tout comme le fichier wp-config.php
, le fichier .htaccess
doit être protégé au maximum. Pour ce faire, insérez ce code :
# Protéger les fichiers .htaccess et .htpasswds <Files ~ "^.*\.([Hh][Tt][AaPp])"> order allow,deny deny from all satisfy all </Files>
Limiter le spam des commentaires
Vous le savez autant que moi si vous avez un blog, le spam de commentaires est une vraie plaie.
Heureusement, il y a une astuce pour s’en prémunir directement dans le fichier .htaccess
. Cela n’est pas une solution miracle mais, combinée avec le plugin Akismet, la majorité des spams devrait être filtrée.
# É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>
N’oubliez pas de remplacer monsite.com
par votre nom de domaine.
Éviter que l’on découvre l’identifiant d’un auteur
Même si vous utilisez un identifiant utilisateur complexe, il peut cependant être découvert.
Bien sûr, j’imagine que vous ne l’affichez pas déjà publiquement avec votre thème (ça peut arriver).
Essayez de taper monsite.com/?author=x
en remplaçant x par 1 pour l’administrateur ou l’ID d’un de vos auteurs. Si vous n’êtes pas protégé, vous serez redirigé vers une page du type monsite.com/author/idenfiant_auteur
.
Voilà comment on trouve un identifiant en 2 secondes. À partir de là, il ne reste plus qu’à tenter de deviner votre mot de passe.
Pour vous protéger de cette technique, utilisez le code suivant :
# Éviter que l'on découvre l'identifiant d'un auteur # Merci à Jean-Michel Silone du groupe Facebook WP-Secure https://www.facebook.com/groups/wp.securite/ <IfModule mod_rewrite.c> RewriteCond %{QUERY_STRING} ^author=([0-9]*) RewriteRule .* - [F] </IfModule>
Désactiver le hotlinking de vos images
Un nouvel anglicisme fait son apparition sur WPMarmite. Rassurez-vous, je vous explique tout.
En fait, une fois que vous aurez ajouté des images sur votre site (par exemple dans un article), n’importe quelle personne pourra copier l’adresse URL d’une de vos images, et l’afficher sur son site.
On pourrait se dire que cela n’est pas si grave mais, si pour une raison X ou Y un site très suivi reprend votre image et l’affiche sur une de ses pages, des requêtes seront effectuées au niveau de votre serveur.
Le hotlinking est en réalité un vol de bande passante. Si votre site est installé sur un petit serveur mutualisé, votre hébergeur risque de ne pas apprécier car les ressources sont limitées.
Pour éviter le problème, insérez et personnalisez ce code dans votre fichier .htaccess
:
# Désactiver le hotlinking de vos images RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?monsite.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ http://fakeimg.pl/400x200/?text=Pas_touche_aux_images [NC,R,L]
Remplacez monsite.com par votre nom de domaine
Pour autoriser certains sites à afficher vos images, utilisez le code suivant :
# Désactiver le hotlinking de vos images RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?monsite.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?monsite2.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?monsite3.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ http://fakeimg.pl/400x200/?text=Pas_touche_aux_images [NC,R,L]
Remplacez monsite.com, monsite2.com et monsite3.com par les domaines de votre choix
Vous pouvez aussi personnaliser l’image qui s’affichera à la place de l’image demandée. J’ai ajouté quelque chose de simple, mais vous pouvez être plus taquin.
Bannir des adresses IP
Si vous avez remarqué que certaines adresses IP tentaient de se connecter un peu trop souvent à l’administration de votre site (par exemple avec le plugin Login Lockdown), vous pouvez vous en débarrasser en bannissant leur adresse IP.
Vous avez aussi la possibilité de récupérer les adresses IP des spammeurs de commentaires pour les bannir de votre site.
Cette solution n’est pas définitive car votre assaillant pourra changer d’adresse IP, mais cela pourra fonctionner pour les personnes les moins douées.
# Bannir une adresse IP <Limit GET POST> order allow,deny deny from xxx.xxx.xxx.xxx allow from all </Limit>
Remplacez xxx.xxx.xxx.xxx par l’adresse IP à bannir
Bloquer les visiteurs provenant de certains sites
Si vous vous rendez compte qu’un site non conforme a fait un lien pointant vers le vôtre, et que vous ne voulez pas que les visiteurs de ce site aient accès à votre site, utilisez ce code :
# Empêcher les visiteurs de ces sites d'accéder au votre <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_REFERER} monsite1.com [NC,OR] RewriteCond %{HTTP_REFERER} monsite2.com [NC,OR] RewriteRule .* - [F] </ifModule>
Remplacez monsite1.com et monsite2.com par les sites de votre choix
Rediriger les visiteurs provenant d’un site vers un autre
Pour aller plus loin que l’astuce précédente, vous pouvez renvoyer les visiteurs provenant de certains sites vers un autre site.
Autant vous dire qu’il y a de quoi bien rigoler. Voici le code à employer :
# Rediriger les visiteurs venant site vers un autre RewriteEngine on RewriteCond %{HTTP_REFERER} sitesource\.com/ RewriteRule ^(.*)$ http://www.sitedestination.com [R=301,L]