Qu'est-ce que le fichier .htaccess et comment l'utilisez-vous dans WordPress ?

Publié: 2020-10-27

Vous avez peut-être déjà entendu parler du fichier .htaccess, mais vous n'avez pas la moindre idée de ce qu'il est ou de ce qu'il fait. Dans cet article, nous allons braquer les projecteurs sur le fichier .htaccess et révéler ses mystères une fois pour toutes. À la fin de cet article, vous comprendrez ce qu'est le fichier .htaccess, ce que fait le fichier .htaccess et comment vous pouvez utiliser le fichier .htaccess pour accomplir certaines tâches. Allons-y!

Qu'est-ce que le fichier .htaccess ?

Commençons par regarder exactement ce qu'est un fichier .htaccess. 'htaccess' signifie 'accès hypertexte'. Ce nom décrit à quoi servait le fichier lorsqu'il a été développé pour la première fois. En bref, il a été utilisé pour contrôler l'accès des utilisateurs à certains fichiers et répertoires. Les choses ont évolué depuis l'apparition de .htaccess sur la scène et il est maintenant utilisé de différentes manières dans WordPress que nous examinerons en détail.

Le .htaccess est un fichier de base de configuration WordPress utilisé pour remplacer des paramètres spécifiques du serveur Web Apache (Apache est un logiciel couramment utilisé sur les serveurs Web) ou pour implémenter diverses autres fonctions qui affectent le fonctionnement de votre site Web. Il est inclus dans toutes les installations WordPress juste après l'activation des permaliens et se trouve généralement dans le répertoire racine de l'installation. Vous pouvez le voir ou le modifier en accédant aux fichiers d'installation via un client FTP comme FileZilla ou WinSCP.

Remarque : Assurez-vous que les préférences de votre client FTP sont modifiées afin que les fichiers cachés soient affichés.

Par défaut, le contenu d'un fichier .htaccess d'un site WordPress, une fois les permaliens activés, ressemble à ceci :

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

Au cas où vous ne le sauriez pas déjà, le "#" au début d'une ligne est un commentaire. Les lignes de commentaires # BEGIN WordPress et # END WordPress sont utilisées pour que le contenu reste organisé lorsque d'autres règles sont appliquées ultérieurement par des plugins ou par vous-même. Tout ajout futur au fichier .htaccess doit être placé en dehors de ces lignes.

Le fichier .htaccess est principalement utilisé dans WordPress pour contrôler les permaliens sur votre site Web. Il peut également être utilisé comme un outil puissant pour diverses autres tâches, telles que le contrôle de l'accès à certains fichiers, l'amélioration de la sécurité et des performances, l'envoi d'en-têtes personnalisés et bien d'autres.

Remarque : Il est important que toute modification apportée au fichier .htaccess de votre site Web soit effectuée avec soin. Même une simple faute de frappe dans ce fichier pourrait entraîner le plantage de votre site Web. En tant que tel, si vous n'êtes pas sûr des modifications que vous apportez, vous devriez idéalement les tester sur un serveur intermédiaire avant de les appliquer à votre site Web en direct.

Choses que vous pouvez faire avec votre fichier .htaccess

Voyons donc comment vous pouvez mieux contrôler votre site Web à l'aide du fichier .htaccess.

Redirection entre 'www' et 'non-www'

Une utilisation courante du fichier .htaccess consiste à définir une redirection permanente de votre "domaine nu" (version non www) vers sa version www ou inversement.

Avant de continuer, assurez-vous que les deux domaines sont définis dans votre DNS pour résoudre l'adresse IP du serveur correct.

De plus, dans votre zone d'administration WordPress, vérifiez si le domaine nu est défini comme principal.

URL du site de paramètres

Vous pouvez rediriger le domaine www vers le domaine nu en ajoutant le code suivant dans le fichier .htaccess, sous le contenu par défaut.

 RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.mycompanyname\.com [NC] RewriteRule ^(.*)$ http://mycompanyname.com/$1 [L,R=301]

Pour accomplir exactement le contraire (si le www est défini comme principal) et rediriger d'un domaine "non-www" vers "www", vous devez insérer ce code :

 RewriteEngine on RewriteCond %{HTTP_HOST} ^mycompanyname.com [NC] RewriteRule ^(.*)$ http://www.mycompanyname.com/$1 [R=301,L]

Si vous n'êtes pas familier avec les expressions régulières utilisées dans le code et que vous souhaitez en savoir plus sur la syntaxe, n'hésitez pas à prendre votre temps et à en savoir plus sur REGEX. HT Access Cheat Sheet est un autre outil très utile

Redirection 301 (redirection permanente)

Une redirection 301 indique aux moteurs de recherche qu'une URL a été définitivement remplacée par une autre et redirige également un utilisateur vers ce visiteur vers une nouvelle URL (correcte !). .

Voici le morceau de code qui, lorsqu'il est placé dans un fichier .htaccess, fait l'affaire :

 RewriteEngine on RewriteCond %{HTTP_HOST} ^mycompanyname.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.mycompanyname.com [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301,NC]

Dans l'exemple ci-dessus, nous avons redirigé les utilisateurs du site Web 'mycompanyname.com vers 'example.com'. Bien sûr, vous voudrez remplacer ces sections par vos propres URL.

Cela s'appliquera également à tous les chemins sous le domaine. Ce qui signifie que par exemple mycompanyname.com/new.html redirigera vers example.com/new.html

Redirection 302 (redirection temporaire)

Lorsqu'un contenu est temporairement déplacé vers un autre emplacement, une redirection 302 est utilisée. La syntaxe est la même qu'en 301. Par exemple :

 Redirect 302 /old.html http//www.mycompanyname.com/new.html

D'un point de vue pratique, le résultat est exactement le même, mais avec une différence importante. Avec une redirection 301, les moteurs de recherche sont informés que la page n'est plus en ligne et, ce faisant, encouragent les moteurs de recherche à supprimer cette page des résultats de recherche. Dans le cas d'une redirection 302, l'URL d'origine sera toujours crawlée par Google qui continuera à indexer à la place de la nouvelle URL. En tant que tel, c'est la solution idéale pour une redirection lorsque vous souhaitez uniquement rediriger temporairement vers un contenu alternatif.

Forcer à HTTPS

Sécuriser votre site Web avec un certificat SSL est très important de nos jours. Les sites Web qui ne le font pas afficheront désormais un avertissement dans la barre du navigateur, ce qui peut saper la confiance dans votre site Web. De plus, Google pénalise en fait les sites Web qui ne fournissent pas de contenu via HTTPS et, par conséquent, votre classement de recherche pourrait en souffrir.

Même lorsque vous installez un certificat SSL sur votre site Web, vous pouvez toujours constater que les utilisateurs peuvent visiter la version non HTTPS de votre site. S'ils le font, ils recevront toujours l'avertissement dans leur navigateur malgré le fait qu'un certificat SSL soit installé. Pour arrêter cela, vous devez forcer tout le trafic de la version HTTP non sécurisée vers la version HTTPS sécurisée. C'est super facile à faire en utilisant votre fichier .htaccess en ajoutant le code suivant :

 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Bloquer les adresses IP

Si vous recevez du trafic de spam ou si votre site Web subit des tentatives d'abus/de piratage de certaines adresses IP, vous pouvez prendre des mesures à l'aide de votre fichier .htaccess en bloquant le trafic provenant de cette adresse IP à l'aide du code suivant dans votre fichier .htaccess.

 Deny from 94.66.58.135

Si vous souhaitez savoir comment bloquer une adresse IP d'une autre manière, veuillez lire ce guide.

Empêcher les liens d'image

Le hotlinking d'image est l'endroit où quelqu'un intègre une image sur votre site Web dans la sienne. Cela peut être problématique (et pas seulement du point de vue du droit d'auteur), car cela signifie que votre serveur doit potentiellement faire des heures supplémentaires pour diffuser des images sur le site Web de quelqu'un d'autre. Vous pouvez arrêter cela en utilisant le fichier .htaccess pour empêcher quelqu'un d'intégrer vos images dans son site Web avec le code suivant :

 RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ - [F]

N'oubliez pas de remplacer 'mycompanyname.com' par l'URL de votre site Web !

Ce code empêche TOUS les sites Web de créer des liens vers des images sur votre site. Parce que vous ne voulez pas empêcher les moteurs de recherche de créer des liens vers des images, vous devrez les ajouter manuellement à la liste blanche. La section du code qui y parvient est cette partie ici :

 RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC]

Vous pouvez bien sûr inclure tous les autres sites Web que vous souhaitez ajouter à la liste blanche. Enfin, la dernière ligne du code ( RewriteRule .(jpg|jpeg|png|gif)$ - [F] ) dicte quels types de médias sont bloqués.

Protéger les fichiers de plugin et de thème

Les fichiers PHP de plugins et de thèmes peuvent parfois être la cible de pirates qui tentent d'y injecter du code malveillant. Vous pouvez utiliser votre fichier .htaccess pour empêcher l'accès à ces fichiers en utilisant le code suivant :

 RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/ RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L] RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/ RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

Protégez les fichiers principaux de WordPress

Il est fortement recommandé que certains fichiers principaux de WordPress soient rendus inaccessibles aux utilisateurs non administrateurs. C'est quelque chose que la plupart des hébergeurs prennent en charge pour vous, mais ce n'est pas toujours le cas. Si vous souhaitez empêcher l'accès aux fichiers WordPress sensibles, vous pouvez utiliser le code suivant dans votre fichier .htaccess :

 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule>

Empêchez les mauvais robots d'explorer votre site Web

Les robots sont essentiellement des scripts Web automatisés qui peuvent analyser des millions de sites Web par jour. Google utilise des robots pour analyser les sites Web et utilise les données de ces analyses pour mettre à jour leurs bases de données de recherche massives. Espérons qu'un bot Google soit totalement inoffensif ! Il existe cependant d'autres bots que vous ne voudrez peut-être pas analyser votre site Web. Certains de ces "mauvais" robots peuvent ne rien faire de plus que simplement consommer de la bande passante inutile du serveur tandis que d'autres peuvent rechercher activement des faiblesses exploitables sur votre site Web. Votre fichier .htaccess peut être utilisé pour bloquer ces "mauvais" bots.

La première chose à savoir est quels bots vous voulez bloquer ? Vous le savez peut-être déjà, mais si ce n'est pas le cas, vous pouvez consulter une liste mise à jour des robots sur liste noire considérés comme suspects. Lorsque vous avez votre liste, vous pouvez les ajouter à votre fichier .htaccess comme ceci :

 #Block bad bods requests SetEnvIfNoCase user-Agent ^FrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Java.* [NC,OR] SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR] SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR] SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR] SetEnvIfNoCase user-Agent ^Zeus [NC]

Après avoir enregistré vos modifications, tous les robots de la liste qui visitent maintenant votre site Web recevront une page 403 Forbidden.

Protéger wp-config.php

Il est généralement recommandé de restreindre l'accès au fichier wp-config.php car il contient les informations d'identification d'accès à la base de données.

Pour ce faire via .htaccess, copiez et collez simplement les lignes suivantes dans votre fichier .htaccess :

 <files wp-config.php>order allow,denydeny from all</files>

Désactiver l'exécution de PHP

Un moyen très efficace de se protéger des tentatives de piratage consiste à empêcher l'exécution de PHP dans des répertoires spécifiques où il n'est pas nécessaire. Par exemple, les /wp-includes/ et /wp-content/uploads/ sont des emplacements populaires utilisés par les pirates pour placer du code qui permet un accès non autorisé au serveur (connu sous le nom de fichiers de porte dérobée). La désactivation de l'exécution de PHP dans ces répertoires n'effacera pas ces fichiers mais les empêchera d'exécuter leur code. Pour ce faire, ajoutez le code suivant à votre fichier .htaccess.

 <Files *.php>deny from all</Files>

Vous constaterez également que de nombreux hébergeurs, dont Pressidium, ont déjà désactivé par défaut l'exécution de PHP dans ces annuaires afin d'améliorer leur niveau de sécurité pour leurs clients.

Désactiver l'accès XML-RPC

C'est un problème courant souvent rencontré par les équipes d'assistance des sociétés d'hébergement où une installation WordPress reçoit des milliers de requêtes "POST /xmlrpc.php HTTP/1.1" qui sont souvent liées à une attaque provenant d'une ou plusieurs adresses IP. Une solution à cela consiste à désactiver XML-RPC.

Pour désactiver XML-RPC pour votre site Web, ajoutez ces lignes de code à votre fichier .htaccess :

 # Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all </Files> # END protect xmlrpc.php

Il convient de noter que xmlrpc.php est nécessaire si vous mettez à jour votre contenu à l'aide d'applications mobiles ou de connexions à distance. Donc, si vous envisagez de le désactiver de façon permanente, assurez-vous qu'il n'est pas nécessaire pour votre travail.

Forcer le téléchargement des fichiers

Il peut être extrêmement ennuyeux pour un utilisateur de site Web que, lorsque vous souhaitez télécharger un fichier à partir d'un site Web (par exemple un PDF), le fichier s'ouvre à la place dans la fenêtre du navigateur. Si vous avez des fichiers sur votre site Web qui sont fournis en tant qu'éléments téléchargeables pour vos utilisateurs, vous pouvez modifier votre fichier .htaccess et ajouter une ligne de code qui peut forcer le téléchargement de types de fichiers spécifiques et non leur affichage directement depuis le navigateur. Vous verrez ce code ci-dessous avec quelques exemples de types de fichiers que vous aimeriez que les utilisateurs puissent télécharger directement.

 AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4

Envoyer des en-têtes HTTP personnalisés

Les utilisateurs avancés voudront peut-être pouvoir envoyer des en-têtes HTTP aux clients en tirant parti de la directive d'en-tête d'Apache. Pour ce faire, ajoutez le code suivant à votre fichier .htaccess.

 Header add my-custom-header "my custom header value"

L'exemple ci-dessus indiquerait à Apache d'ajouter un en-tête nommé "my-custom-header" pour chaque requête adressée au serveur. Si nous implémentons cette mise à jour, puis vérifions notre onglet réseau dans les outils de notre navigateur, nous pouvons confirmer sa réponse comme indiqué ci-dessous.

mon en-tête personnalisé

Cette technique est très courante pour ajouter des en-têtes de cache et de sécurité ou ajouter un jeu de caractères de langue. Jetez un œil à cet article pour quelques utilisations populaires. Vous pouvez également trouver une liste détaillée d'en-têtes à expérimenter dans cette liste.

Conclusion

J'espère que cet article vous a donné un aperçu des choses qui peuvent être réalisées avec le fichier .htaccess. Bien sûr, beaucoup de ces choses peuvent être accomplies en utilisant un plugin, mais il est toujours utile de comprendre ce qui se passe exactement "sous le capot", surtout si un plugin ne fonctionne pas comme prévu. Maîtriser comment éditer le fichier .htaccess plutôt que de s'appuyer sur un plugin permet également d'améliorer votre niveau d'expertise WordPress… et c'est toujours une bonne chose !