Vous êtes sur la page 1sur 29

Le guide ultime du fichier .

htaccess
dans WordPress
Par Alex de WP Marmite

Saviez-vous que 100% des 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é.

Malgré tout, il faut savoir que ce fichier peut jouer un rôle


beaucoup plus important.

Le fichier .htaccess est un fichier de configuration d’Apache,


le logiciel qu’utilise votre serveur pour fonctionner.
Le contenu de ce fichier va donner des directives à
Apache pour que le serveur se comporte de telle ou telle
manière.

Grâce au fichier .htaccess on va notamment pouvoir :

 Améliorer la sécurité d’un site


 Augmenter la vitesse de chargement
 Mettre en place des redirections
 Limiter le spam
 Et même faire des petites blagues 

Ça vous intéresse n’est-ce pas ?

Alors continuez la lecture, vous ne serez pas déçu !

Avant de commencer

Avant de plonger dans le vif du sujet, nous allons étudier les


bases afin que les débutants ne soient pas largués dès le
début de l’article 

Fonctionnement des fichiers .htaccess

Ceci étant posé, nous allons bientôt pouvoir commencer. La


dernière information que vous devez connaître est qu’un site
peut posséder plusieurs fichiers .htaccess.

Tout d’abord, il y a le fichier .htaccess principal qui est 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).

Le contenu du fichier .htaccess principal aura une influence


sur l’ensemble du site.

D’autres fichiers .htaccess peuvent être créé 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.

Surtout, prenez vos précautions !

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

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 car il faut être


certain que 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 d’erreur :

Dans ce cas, annulez vos modifications et sauvegardez à


nouveau et 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 a besoin que d’une légère
modification pour que ça fonctionne.

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.

Il existe d’autres solutions comme le plugin WP Htaccess


Editor pour le modifier directement à partir de
WordPress mais en cas de probleme il faudra passer par le
FTP et votre éditeur de code, donc autant le faire
directement.

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 directement depuis votre serveur :

 Faites un clic droit dans le répertoire où il devra se


trouver
 Ajoutez un nouveau fichier et nommez-le .htaccess
 Editez-le avec votre éditeur de code (Notepad++, Coda,
SublimeText ou autre)

Les commentaires dans .htaccess

Comme dans la totalité des langages informatiques, le


fichier .htaccess permet d’inclure des commentaires.

Dans notre cas, il suffit de placer le symbole # en début de


ligne pour quelle soit ignorée. Cela est très pratique pour se
rappeler de ce que réalisent des lignes de code.

Vous aurez l’occasion de voir des commentaires dans


les exemples de cet article.

Nous pouvons commencer à entrer dans le vif du sujet avec


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

Code par défaut du fichier .htaccess de 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 codes 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 WordPresset # END WordPress car il est possible que
ce code soit modifié dans certains cas.

Avertissement : Faites une sauvegarde de votre


fichier .htaccessd’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 cela est du pain bénit pour les
pirates. Le fait qu’ils puissent voir les fichiers de votre site
vont 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

Cet article présente la liste des valeurs à employer si vous


n’êtes pas en France.

Définir l’encodage des caractères par défaut

Le code suivant permet de définir l’encodage des caractères


des fichiers textes et HTML en tant que UTF-8. 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 sera
clairement 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 vos 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é 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.

Désactiver le hotlinking de vos images

Et oui, un nouvel anglicisme fait son apparition sur la


Marmite. 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
peut 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és.

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_imag
es [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_imag
es [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é de certaines 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 banissant 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 à fait


un lien pointant vers vous 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]

Remplacez les sites source et destination par ceux de votre


choix

Créer des redirections

Le fichier .htaccess permet de faire des redirections. Cela est


bien pratique pour rediriger quelques pages mais si vous
souhaiter créer beaucoup de redirections, je vous conseille le
plugin WordPress Redirection.

Voici tout de même comment créer des redirections dans le


fichier .htaccess :

# Redirection d'une page quelconque


Redirect 301 /anciennepage/
http://www.monsite.com/nouvellepage
# Redirection d'une nouvelle catégorie (avec
renommage de category en categorie)
Redirect 301 /category/technologie/
http://www.monsite.com/categorie/techno/

Rediriger l’adresse sans www vers www

Quand on met en place un site, une des actions à accomplir


en priorité est de rediriger le site sans les www vers la
version doté des www (ou l’inverse).

Si vous faites le test la prochaine fois que vous créerez un


site, vous constaterez que les deux adresses ne renvoient
pas forcément vers votre site.

Dans certains cas l’hébergeur s’en charge automatiquement


ou il faut l’activer via l’administration de l’hébergeur (c’est
par exemple le cas avec Gandi).

Si vous devez procéder à cette redirection manuellement,


utilisez le code suivant en remplaçant monsite.com par votre
site :

# Redirection du site sans www vers www


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

Remplacez monsite.com par votre nom de domaine

Rediriger l’adresse www vers sans www

À l’inverse, si vous ne voulez pas des www devant le nom de


votre site (comme pour la Marmite), il est possible de faire
une redirection vers la version sans les www.

Insérez le code suivant dans le fichier .htaccess :

# Rediriger vers la version sans www


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

Remplacez monsite.com par votre nom de domaine

Attention : N’utilisez pas ce code avec le précédent sinon


votre site souffrira d’une boucle de redirection (car la version
sans www redirigera vers la version avec www qui redirigera
vers la version sans www, etc.)

Rediriger vers HTTPS

Si vous avez mis en place un certificat SSL sur votre site pour
le passer en HTTPS, vous devez être certain que tous vos
visiteurs naviguent bien sur la version sécurisée de votre site.

Dans le cas contraire, des informations sensibles pourraient


être récupérées par des pirates (des données personnelles ou
bancaires par exemple).
Utilisez le code suivant pour passer tout votre site en HTTPS :

# Redirection vers HTTPS


RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$
https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

Forcer le téléchargement de fichiers


spécifiques

Lorsque l’on désire télécharger un fichier à partir d’un


site, notre navigateur essaie parfois de l’ouvrir pour l’afficher.

Personnellement, je trouve cela pratique pour les fichiers


PDF en revanche, c’est très désagréable pour d’autres types
de fichiers.

Insérez le code suivant pour que vos visiteurs téléchargent


directement les fichiers dotés de ces extensions (modifiez-les
à votre guise) :

# Forcer le téléchargement pour ces types de


fichiers
AddType application/octet-stream .doc .docx .xls
.xlsx .csv .mp3 .mp4

Créer une page de maintenance personnalisée

Dans un précédent article, nous avons découvert le plugin


WP Maintenance. Pourtant, il y a des cas où la page de
maintenance ne pourra pas s’afficher.
En effet, si l’installation de WordPress a un problème, le
plugin ne pourra pas fonctionner et donc la page de
maintenance ne pourra pas s’afficher.

C’est fâcheux n’est-ce pas ?

Pour bénéficier d’une page de maintenance, vous pouvez


utiliser le code suivant :

# Page de maintenance
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx
RewriteRule $ /maintenance.html [R=302,L]

Pour que cela fonctionne, vous devez :

 Créer un fichier maintenance.html avec du contenu


indiquant que le site est en maintenance
 Ajouter votre adresse IP dans la ligne 4 (en gardant bien
les “\”) pour vous permettre d’accéder au site
(découvrez votre adresse IP sur ce site)

Quand la maintenance sera terminée, mettez des “#” devant


chaque ligne pour les passer en commentaire.

Activer la mise en cache

Le fichier .htaccess permet de mettre en cache certains


fichiers de votre site dans le navigateur de vos visiteurs pour
que le chargement soit plus rapide.
En effet, le navigateur n’aura pas besoin de retélécharger les
fichiers présents dans son cache.

Pour ce faire, insérez le code suivant :

# Mise en cache des fichiers dans le navigateur


<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0
seconds"
ExpiresByType application/json "access plus 0
seconds"
ExpiresByType application/pdf "access plus 0
seconds"
ExpiresByType application/rss+xml "access plus 1
hour"
ExpiresByType application/atom+xml "access plus 1
hour"
ExpiresByType application/x-font-ttf "access plus 1
month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus
1 month"
ExpiresByType application/x-font-woff2 "access plus
1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access
plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
ExpiresByType text/css "access plus 6 month"
ExpiresByType application/javascript "access plus 6
month"
ExpiresByType application/x-shockwave-flash "access
plus 1 week"
ExpiresByType image/x-icon "access plus 1 week"
</IfModule>

# En-têtes
Header unset ETag
FileETag None

<ifModule mod_headers.c>
<filesMatch "\.(ico|jpe?g|png|gif|swf)$">
Header set Cache-Control "public"
</filesMatch>
<filesMatch "\.(css)$">
Header set Cache-Control "public"
</filesMatch>
<filesMatch "\.(js)$">
Header set Cache-Control "private"
</filesMatch>
<filesMatch "\.(x?html?|php)$">
Header set Cache-Control "private, must-revalidate"
</filesMatch>
</ifModule>

La mise en cache des fichiers sera effective pendant la durée


spécifiée pour chaque type de fichier où jusqu’à ce que le
visiteur vide son cache.

Activer la compression

En plus de tout ce que nous avons vu jusqu’à présent, il est


possible de compresser certaines ressources avant qu’elles
soient transféré du serveur au navigateur.
Et qui dit compression de fichier dit vitesse d’affichage plus
rapide pour la page. Je vous recommande donc de mettre en
place ce code pour donner un coup d’accélérateur à votre
site :

# Compressions des fichiers statiques


<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/xhtml text/html
text/plain text/xml text/javascript application/x-
javascript text/css
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-
gzip dont-vary
Header append Vary User-Agent env=!dont-vary
</IfModule>

AddOutputFilterByType DEFLATE text/html


AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE
application/javascript
AddOutputFilterByType DEFLATE application/json

Désactiver l’accès à certains scripts

Pour fonctionner, WordPress utilise des scripts situés dans le


répertoire wp-includes, cependant il n’y a aucune raison d’y
accéder directement. Utilisez ce code pour en limiter l’accès :

# Bloquer l'utilisation de certains scripts


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]

Vous pourrez en savoir plus dans le codex.

Protection contre les injections de fichiers

Des pirates peuvent tenter d’envoyer des fichiers sur votre


serveur pour prendre le contrôle de votre site. Pour leur
mettre des batons dans les roues, vous pouvez inclure ce
code dans votre fichier .htaccess :

# Protection contre les injections de fichiers


RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http://
[OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+
[OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-
9_.]//?)+ [NC]
RewriteRule .* - [F]

.htaccess dans wp-admin

wp-admin, c’est l’antre de votre site. L’endroit où vous vous


rendez pour écrire des articles, configurer vos menus,
paramétrer votre thème et bien d’autres choses encore.

Il va de soi qu’aucune personne non autorisée ne doit


pénétrer dans ce sanctuaire. Sinon, attention les dégâts.
Voici ce qu’il est possible de faire pour durcir la sécurité
grâce à un fichier.htaccess que vous aurez placé dans le
dossier wp-admin de votre site.

Limiter l’accès à l’administration du site

Seules les personnes possédant les IP listés pourront accéder


au dossier wp-admin. Plutôt pratique pour éviter que des
étrangers se connectent à votre site (même s’ils ont le bon
mot de passe).

<Limit GET POST PUT>


order deny,allow
deny from all
# IP d'Alex
allow from xxx.xxx.xxx.xxx
# IP de Nico
allow from xxx.xxx.xxx.xxx
# IP d'un autre point d'accès
allow from xxx.xxx.xxx.xxx
</Limit>

Ajouter une seconde authentification

Lorsque vous vous connectez à l’administration d’un site


WordPress, vous utilisez un identifiant et un mot de passe. Eh
bien il est possible d’en ajouter un second grâce au
fichier .htaccess et à un autre fichier.

Tout d’abord, créez un fichier nommé .htpasswd dans le


répertoire wp-admin et insérez-y un couple d’identifiant et
mot de passe. Servez-vous de ce site pour vous aider :
Entrez l’identifiant à utiliser dans le premier champ et votre
mot de passe dans le second puis cliquez sur “Générer”.

Copiez ensuite la ligne qui s’affichera dans le


fichier .htpasswd. Si vous avez besoin de créer plusieurs
utilisateurs, recommencez l’opération et ajoutez le nouveau
couple d’identifiant/mot de passe au sein d’une nouvelle
ligne.

Par exemple, vous pouvez obtenir de genre de fichier :

alex:ieS547B1UxY8M
nico:rSqEJf0SeTlRs

Contenu fictif d'un fichier .htpasswd

Ensuite, insérez le code suivant dans le fichier .htaccess :

# Seconde authentification pour l'administration


AuthName "Connexion à l'administration"
AuthType Basic
AuthUserFile
"/chemin/complet/vers/le/fichier/.htpasswd"

<limit GET POST>


Require valid-user
</limit>
Le point sensible de cette manipulation est de bien entrer le
chemin complet du fichier .htpasswd. Pour le trouver à coup
sûr, créez un fichier info.php et insérez le code suivant :

<?php echo "Chemin à copier : " .


realpath('.htaccess'); ?>

Placez le fichier info.php dans wp-admin

Rendez-vous sur votresite.com/wp-admin/info.php et


vous obtiendrez le chemin réel du fichier .htpasswd à placer
dans le fichier .htaccess. Supprimez le fichier info.php une
fois que vous aurez obtenu le bon chemin.

Si vous avez bien compris tout ce que je viens de citer, vous


devriez avoir une double authentification en place pour
accéder à l’administration de WordPress ! Bravo 

Allez, on passe à la suite.

.htaccess dans wp-includes

Bloquer l’accès direct aux fichiers PHP

Créez un fichier .htaccess dans wp-includes et collez-y le


code suivant pour éviter que des fichiers PHP 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>

Le code ci-dessus est fourni par le plugin Sucuri. En


complément, je vous conseille de souscrire à leur
service pour dormir sur vos deux oreilles au niveau de la
sécurité.

.htaccess dans wp-content

Bloquer l’accès direct aux fichiers PHP

Pour le dossier wp-content le code est similaire, il y a juste


les exceptions en moins :

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

.htaccess dans wp-content/uploads

Bloquer l’accès direct aux fichiers PHP

Toujours avec ce code, protégez le dossier où sont stockés


les médias pour éviter que des fichiers PHP soient exécutés
par quelqu’un de l’extérieur (un méchant pirate par exemple).

# 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 et ressources pour aller plus


loin

Bien que pas mal de choses aient été abordées dans cet
article, il est possible d’aller plus loin dans le paramétrage de
votre fichier .htaccess.

On peut citer le Codex de WordPress, la documentation


d’Apache (le logiciel qui fait tourner votre serveur) ou encore
le blog Perishable Press (ils ont même écrit un bouquin là
dessus).
Je tiens à vous rappeler de procéder à vos modifications
avec une extrême attention. Des erreurs ou des
incompatibilités peuvent se produire en fonction
de l’hébergeur de votre site.

Gardez toujours une sauvegarde du fichier .htaccess d’origine


pour effectuer une restauration en cas de problème (je vous
aurai prévenu !).

Eh bien, ce fut un sacré article n’est-ce pas ?

Merci de l’avoir lu en intégralité 

Cet article vous a plus ? Dites ce que vous en pensez sur la


Marmite en rédigeant un commentaire juste ici.

BONUS
En complément de l’article, allez sur ce site pour aller plus
loin avec les fichiers .htaccess.

Téléchargez aussi les fichiers sources de l’article en cliquant


ici.

Attention, sur Windows les fichiers commençants par un


point comme .htaccess ne sont pas autorisés.
Si un problème survient, vous avez tout de même la
possibilité de faire des copier/coller à partir de cette page.

Vous aimerez peut-être aussi