Vous vous demandez comment créer des redirections, protéger vos fichiers ou bannir une adresse IP de votre site WordPress ? Si c’est le cas, vous avez sûrement croisé le nom de « fichier .htaccess » lors de vos recherches.
Un fichier .htaccess (contraction de « Hypertext Access ») est un fichier de configuration d’Apache. Il permet de modifier la configuration du serveur au niveau de chaque répertoire et des sous-répertoires qu’il contient.
Voici comment le configurer et l’optimiser pour améliorer votre site Internet !
Pourquoi est-il important ?
Votre fichier .htaccess WordPress vous permet par exemple de protéger un répertoire par mot de passe, d’interdire un accès à des ressources, de créer des redirections, entre autres usages.
Il joue donc un rôle important dans la sécurisation et l’amélioration des performances de votre site.
Notez que vous pouvez avoir plusieurs fichiers .htaccess. Ce sera par exemple le cas si vous placez un fichier dans un sous-répertoire dont le répertoire parent est déjà contrôlé par un .htaccess.
Où trouver le fichier .htaccess de votre installation WordPress ?
Si vous avez déjà modifié les permaliens par défaut depuis votre tableau de bord (ce que nous vous conseillons de faire), un fichier .htaccess devrait être présent dans l’arborescence de votre site Internet.
Pour y accéder et le modifier, vous pouvez utiliser FileZilla ou le client FTP que vous utilisez habituellement.
L’une des manières les plus simples d’éditer votre fichier .htaccess avec WordPress est de passer par le plugin WordPress SEO By Yoast. Dans ce cas, nul besoin d’ouvrir FileZilla : il vous suffit de cliquer sur SEO > Outils > Editeur de fichiers. Vous y trouverez le contenu de votre fichier robots.txt et du .htaccess.
Comment créer un fichier .htaccess sous Windows ?
Selon la version de Windows utilisée, vous risquez de rencontrer des problèmes et de ne pas pouvoir créer un fichier dont le nom est une extension (« . »quelquechose).
Le mieux est de lui donner un autre nom lorsque vous l’enregistrez depuis votre éditeur de texte, puis de le renommer une fois chargé sur le serveur de votre hébergement.
Et sur Mac ?
Si vous enregistrez un fichier qui commence par un point, il deviendra immédiatement invisible. Là encore, prenez vos précautions en modifiant son nom (htaccess.txt par exemple).
Exemple simple de fichier .htaccess WordPress
En cas de besoin de recréer le contenu d’un fichier .htaccess qui aurait été corrompu, vous pouvez vous baser sur cette structure (pour un WordPress simple, pas une installation multisite) :
# 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
Pour une installation multisite WordPress, le .htaccess de base ressemblera plus à cette version :
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*.php)$ $2 [L]
RewriteRule . index.php [L]
Ces règles doivent être placées dans votre fichier .htaccess principal, au niveau de la racine de votre site.
N’oubliez pas de commenter vos modifications .htaccess
Pour garder le contrôle sur votre fichier, il est important de pouvoir retrouver et comprendre ce que vous lui avez ajouté, même plusieurs mois plus tard.
Les commentaires se font ligne par ligne, chaque ligne commençant par un signe #.
Si votre commentaire prend plus de place qu’une seule ligne, vous devez de nouveau ajouter un #.
Essayez de vous limiter à des caractères alphanumériques.
Astuces et codes pour votre fichier .htaccess
- Protéger wp-config.php et vos fichiers sensibles
Vous n’avez sûrement pas envie que des personnes mal intentionnées aient accès à vos fichiers config.php, error_logs, php.ini ou encore htpasswds.
Pour renforcer leur sécurité, ajoutez les lignes suivantes à votre fichier .htaccess :
<FilesMatch "^.*(error_log|wp-config.php|php.ini|.[hH][tT][aApP].*)$">
Order deny,allow
Deny from all
</FilesMatch>
- Protéger wp-content
Avec les lignes suivantes, vous pouvez refuser l’accès direct à vos fichiers dont l’extension est en .php. Cela renverra une erreur 403 (accès refusé).
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /wp-content/.*$ [NC]
RewriteCond %{REQUEST_FILENAME} !^.+flexible-upload-wp25js.php$
RewriteCond %{REQUEST_FILENAME} ^.+.(php|html|htm|txt)$
RewriteRule .* - [F,NS,L]
Attention, cet ajout peut perturber certains thèmes ou plugins.
- Bannir quelqu’un de votre site Internet
Un commentateur devient ingérable ? Quelqu’un essaie de forcer l’accès à votre tableau de bord ? Vous avez récupéré l’adresse IP d’un troll ou souhaitez bannir celle d’un site tiers qui perturbe votre travail ? Ajoutez ces lignes au fichier .htaccess en ajoutant les adresses IP que vous souhaitez blacklister.
<Limit GET POST>
order allow,deny
deny from 123.456.78.9
deny from 987.654.32.1
allow from all
</Limit>
- Créer des redirections 301
Vous souhaitez rediriger un article vers une nouvelle URL ? Cela peut être très utile lorsque vous mettez à jour votre contenu.
Si vous n’avez pas envie d’utiliser un plugin dédié, il vous suffit d’insérer ce snippet dans votre fichier .htaccess en remplaçant avec les bonnes URL.
redirect 301 /super-ancien-article-a-rediriger http://www.votresite.com/nouvel-article
- Créer des redirections 301 d’un ancien domaine vers un nouveau domaine
Vous souhaitez passer de votre « vieuxdomaine.fr » à votre « nouveaudomaine.fr » et n’avez pas modifié les noms des dossiers et fichiers ?
Ajoutez ces lignes au .htaccess de votre installation WordPress :
# redirect vieux domaine vers nouveau domaine
RewriteEngine On
RewriteRule ^(.*)$ http://www.nouveaudomaine.fr/$1 [R=301,L]
N’oubliez pas de vérifier que tout va bien sur votre site Internet après la mise en place de cette redirection.
- Protéger le fichier .htaccess lui-même
Après avoir passé autant de temps à optimiser et sécuriser votre site Internet, la dernière chose dont vous rêvez est sûrement celle de vous faire pirater votre fichier .htaccess.
Pour renforcer sa protection, ajoutez-lui les lignes suivantes :
<Files ~ “^.*.([Hh][Tt][Aa])”>
order allow,deny
deny from all
satisfy all
</Files>
Si vous souhaitez aller encore plus loin, vous pouvez aussi changer le nom du fichier .htaccess.
Vous devrez utiliser la directive AccessFileName et insérer le nouveau nom dans le fichier de configuration de votre serveur, sur le modèle suivant :
# renomme fichiers htaccess
AcessFileName ".nouveaunom"
Pour plus de détails sur cette méthode, nous vous conseillons de consulter ce tutoriel du serveur http Apache.
Précision importante : si vous renommez vos fichiers .htaccess, pensez à mettre à jour tous les réglages qui y sont associés, tels que la protection de votre fichier.
- Forcer le téléchargement automatique de certains fichiers
Avez-vous déjà remarqué que selon le site Internet sur lequel vous naviguez, les PDF sont parfois ouverts dans un onglet du navigateur, d’autres fois immédiatement téléchargés ?
Vous pouvez choisir de faire la même chose sur votre site. La ligne suivante vous permet de choisir quels types de fichiers vous souhaitez voir téléchargés automatiquement, plutôt que d’être ouverts dans le navigateur de votre visiteur.
AddType application/octet-stream .avi .pdf .xls .mp4
Modifiez-la bien sûr avec les extensions choisies.
- Envoyer les visiteurs vers une page de maintenance
Lorsque vous retravaillez votre site Internet, il arrive d’avoir besoin de passer en mode maintenance pour éviter que les visiteurs ne voient vos modifications en direct.
Si les plugins spécialisés font parfois l’affaire, ce n’est pas toujours le cas, notamment lorsque votre site connaît une attaque ou un problème technique qui font naître le célèbre « écran blanc de la mort » (WordPress White Screen of Death).
Dans ce cas, vous ne pouvez pas vous reposer sur un plugin pour rediriger les visiteurs vers une page de maintenance, puisqu’ils ne fonctionneront pas non plus.
C’est là que votre fichier .htaccess entre en jeu.
D’abord, créez votre page personnalisée, nommez-la maintenance.html et chargez-la avec votre client FTP.
Ensuite, modifiez les lignes de code suivantes pour qu’elles soient adaptées à votre site (emplacement de la page, adresse IP, etc.) et insérez-les dans votre .htaccess. Comme vous le voyez, il s’agit d’une redirection 302 pour éviter qu’elle ne soit indexée.
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123.123.123.123
RewriteRule $ /maintenance.html [R=302,L]
- Autoriser la mise en cache du navigateur
La mise en cache du navigateur fait partie des opérations qui améliorent les performances de votre site. Une fois autorisée, elle permet aux visiteurs de « garder » des éléments de votre page sans avoir à les recharger lorsqu’ils reviennent sur votre site.
Pour ce faire, vous n’avez qu’à ajouter le code suivant à votre fichier .htaccess :
## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>
## EXPIRES CACHING ##
Attention, vérifiez bien que votre plugin de cache ne s’occupe déjà pas de cette fonctionnalité (si vous en avez installé un).
- Autoriser la mise en cache de fichiers
Dans cette même volonté d’améliorer les performances de votre site, voici une méthode complémentaire pour (considérablement) améliorer la vitesse de chargement de votre site en configurant la mise en cache de fichiers.
Modifiez la durée souhaitée pour chaque type de contenu (en secondes) en vous basant sur les exemples suivants :
# cache images et flash pendant un mois
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
# cache texte, css et javascript pour une semaine
<FilesMatch ".(js|css|pdf|txt)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>
# cache fichiers html et htm pendant un jour
<FilesMatch ".(html|htm)$">
Header set Cache-Control "max-age=43200"
</FilesMatch>
- Empêcher l’accès à vos répertoires
Pour renforcer la sécurité de votre site WordPress, il peut être intéressant d’empêcher des visiteurs mal intentionnés d’aller se promener dans l’arborescence des répertoires de votre installation.
Pour ce faire, ajoutez les lignes suivantes à .htaccess :
# empeche acces repertoires
Options All -Indexes
- Limiter le hotlinking de vos images
Le hotlinking consiste à voler votre bande passante en utilisant une ou plusieurs de vos images sur un site tiers, tout en continuant à utiliser votre hébergement.
Il n’y a pas de solution 100 % efficace pour prévenir ce type de détournement, mais vous pouvez renforcer votre protection en ajoutant ces lignes, à personnaliser en fonction de votre site :
#limite le hotlinking d'images
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?votresite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?feeds2.feedburner.com/votresite [NC]RewriteRule .(jpg|jpeg|png|gif)$ – [NC,F,L]
Conclusion
Votre fichier .htaccess vous offre des possibilités exceptionnelles pour sécuriser votre site, en contrôler les accès, gérer vos redirections ou encore améliorer vos performances. Cependant, le modifier est souvent intimidant, dans la mesure où le moindre espace ou caractère mal placé peut faire sauter l’ensemble de votre site Internet.