Magazine Blog

WordPress : configurer le fichier .htaccess

Publié le 11 novembre 2009 par Maccimum

Le fichier .htaccess est un fichier de configuration utilisé par un serveur Web Apache qui fournit des instructions pour les différents répertoires d’un site Web. htaccess est l’abréviation de « HTTP access » en anglais ou « accès HTTP » en français, qui est le protocole utilisé pour la transmission des pages Web. Ce type de fichier permet de gérer des redirections, des restrictions d’accès, d’afficher des pages d’erreurs personnalisées, mais aussi de restreindre l’accès à certaines de vos pages web à l’aide d’identifiants.

wordpress-htaccess

La mise en place de ces fichiers se révèle donc très utile dans la gestion d’un site ou d’un blog. Toutefois, avant de vous lancer dans l’écriture de votre fichier .htaccess, n’oubliez pas que leur création peut se révéler délicate, voir même périlleuse. La syntaxe des règles doit être respectée à la lettre près. La moindre faute se traduira le plus souvent par une erreur 500.

Intérêt des fichiers htaccess

Les principales raisons d’utilisation des fichiers .htaccess sont :

  • Gérer l’accès à certains fichiers.
  • Refuser l’accès à des adresses IP spécifiques ou à d’autres sites Web
  • Ajouter un mime-type.
  • Protéger l’accès à un répertoire par un mot de passe.
  • Protéger l’accès à un fichier par un mot de passe.
  • Définir des pages d’erreurs personnalisées.
  • Autoriser le listage du contenu des répertoires qui ne possèdent pas de fichier d’index.

Quelques principes de bases

  • Le nom du fichier .htaccess est obligatoirement « .htaccess » et n’inclut pas de nom de fichier avant le point.
  • Le fichier .htaccess est placé dans le répertoire dans lequel il doit agir. Il agit ainsi sur les permissions du répertoire qui le contient et de tous ses sous-répertoires.
  • Les fichiers .htaccess peuvent être utilisés dans n’importe quel répertoire virtuel ou sous-répertoire.
  • Vous pouvez placer un autre fichier .htaccess dans un sous-répertoire d’un répertoire déjà contrôlé par un fichier .htaccess.
  • Le fichier .htaccess du répertoire parent reste opérationnel tant que les fonctionnalités ne sont pas été réécrites.
  • Les restrictions d’accès définies par un fichier .htaccess s’étendent à tous les sous-dossiers.

Configuration du fichier .htaccess

Étape 1, créer un fichier .htaccess vierge

Cela peut être fait à l’aide d’un simple éditeur de texte, au format ASCII. Ouvrez-le et enregistrez-le sous le nom “htaccess.txt”. Vous pourrez ensuite le renommer « .htaccess ».

Étape 2. Ajouter du contenu à htaccess.txt

Vous pouvez maintenant éditer le fichier et sélectionner ci-dessous les sections que vous souhaitez utiliser en les copiant dans votre propre fichier. htaccess. Veillez à supprimer le # au début de la ligne.

# Pour activer la base Rewriting du serveur (nécessaire uniquement si celui-ci n’est pas configurés avec mod_rewrite activé par défaut)

  1. RewriteEngine on

# Pour désactiver la signature du serveur (ainsi on ne pourra plus l’identifier)

  1. ServerSignature Off

# Pour protéger le fichier .htaccess qui contient des informations sensibles

  1. <files .htaccess>
  2. order allow,deny
  3. deny from all
  4. </files>

# Pour protéger le fichier wpconfig.php

  1. <files wp-config.php>
  2. order allow,deny
  3. deny from all
  4. </files>

# Pour protéger un repertoire ne possédant pas de fichier index. Note : Habituellement, si votre site ne dispose pas d’une page d’index par défaut tous les fichiers de ce répertoire sont accessibles aux visiteurs. Pour éviter cela utilisez le code suivant

  1. Options All -Indexes

# Une autre règle, pour empêcher le serveur de lister le contenu de répertoires

  1. IndexIgnore *

# Pour limiter la taille maximale autorisée pour le téléchargement de fichiers (taille exprimée en octets). Note : ce code est utile uniquement si vous permettez aux utilisateurs d’uploader des fichiers sur votre site.

  1. LimitRequestBody 10240000

# Pour bloquer une adresse IP

  1. deny from 000.000.000.000

# Pour autoriser une adresse IP

  1. allow from 000.000.000.000

# Pour personnalisation des messages d’erreurs

  1. ErrorDocument 404 /notfound.php
  2. ErrorDocument 403 /forbidden.php
  3. ErrorDocument 500 /error.php

# Pour réaliser une redirection permanente 301

  1. Redirect 301 /old.php http://www.yourdomain.com/new.php

# Pour bloquer un site référant

  1. RewriteEngine on
  2. RewriteCond %{HTTP_REFERER} digg\.com [NC]
  3. RewriteRule .* – [F]

# Pour bloquer un faux referrer souvent utilisé

  1. RewriteCond %{HTTP_USER_AGENT} ^[^?]*iaea\.org [NC,OR]

# Pour bloquer les navigateurs se dissimulants avec des lettres et chiffres aléatoires

  1. RewriteCond %{HTTP_USER_AGENT} [0-9A-Za-z]{15,} [OR]
  2. RewriteCond %{HTTP_USER_AGENT} ^[0-9A-Za-z]+$ [OR]

# disable hotlinking of images with forbidden or custom image option

  1. RewriteEngine on
  2. RewriteCond %{HTTP_REFERER} !^$
  3. RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC]
  4. #RewriteRule \.(gif|jpg)$ – [F]
  5. RewriteRule \.(gif|jpg)$ http://www.yourdomain.com/stealingisbad.gif [R,L]

# Pour activer la compression php – À utiliser avec prudence !

  1. <ifmodule mod_php4.c>
  2. php_value zlib.output_compression 16386
  3. </ifmodule>

# Pour définir l’url canonique

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

# Pour déguiser les extentions de fichiers et les présenter comme des fichiers .php (ou celle de votre choix).

  1. ForceType application/x-httpd-php

# Pour renforcer la sécurité et dissimuler les langages de script, remplacez l’extensions d’origine par celle de votre choix. Par exemple, pour changer le .php par l’extension .foo ajouter la ligne suivante à votre fichier htaccess et renommez tous les fichiers en conséquence

# change toutes les extentions .foo par .php

  1. AddType application/x-httpd-php .foo

# change toutes les extentions .foo par .cgi

  1. AddType application/x-httpd-cgi .foo

# Pour se protéger contre des commentaires de Spam

  1. RewriteEngine On
  2. RewriteCond %{REQUEST_METHOD} POST
  3. RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
  4. RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* [OR]
  5. RewriteCond %{HTTP_USER_AGENT} ^$
  6. RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

# Pour améliorer la vitesse de transfert de site, en permettant la mise en cache des fichiers :

a) Pour mettre en cache les images et fichiers flash pour un mois

  1. <FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf)$">
  2. Header set Cache-Control "max-age=2592000"
  3. </FilesMatch>

b) Pour mettre en cache les fichiers javascript, texte,css et pdf pour une semaine

  1. <FilesMatch ".(js|css|pdf|txt)$">
  2. Header set Cache-Control "max-age=604800"
  3. </FilesMatch>

c) Pour mettre en cache les fichiers html et htm pour un jour

  1. <FilesMatch ".(html|htm)$">
  2. Header set Cache-Control "max-age=43200"
  3. </FilesMatch>

d) Pour mettre un cache minimum pendant la durée de construction d’un site

  1. <FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|js|css|pdf|swf|html|htm|txt)$">
  2. Header set Cache-Control "max-age=5"
  3. </FilesMatch>

e) Pour désactiver le cache pour les scripts et fichiers dynamiques

  1. <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
  2. Header unset Cache-Control
  3. </FilesMatch>

f) Méthode alternative pour mettre en cache les fichiersExpiresActive On

  1. ExpiresActive On
  2. ExpiresDefault A604800 # 1 week
  3. ExpiresByType image/x-icon A2419200 # 1 month
  4. ExpiresByType application/x-javascript A2419200 # 1 month
  5. ExpiresByType text/css A2419200 # 1 month
  6. ExpiresByType text/html A300 # 5 minutes

g) désactive le cache de scripts et fichiers

  1. <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
  2. ExpiresActive Off
  3. </FilesMatch>

* Convertir des intervalles de temps en secondes :
300 = 5 minutes
2700 = 45 minutes
3600 = 1 heure
54000 = 15 heures
86400 = 1 jour
518400 = 6 jours
604800 = 1 semaine
1814400 = 3 semaines
2419200 = 1 mois
26611200 = 11 mois
29030400 = 1 an = n’expire jamais

# Pour limiter les requêtes par methode GET et PUT

  1. Options -ExecCGI -Indexes -All
  2. RewriteEngine on
  3. RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|HEAD) RewriteRule .* – [F]

# Pour définir la langue le jeu de caractères par défaut

  1. AddDefaultCharset UTF-8

# Pour régler le fuseau horaire du serveur (mettre le server timezone pour Paris ou Washington)

  1. SetEnv TZ Europe/Paris ou SetEnv TZ America/Washington

Étape 3. Transférer le fichier .htaccess sur le serveur

Après avoir modifié votre fichier .htaccess, transférez-le sur votre server (en mode d’ASCII), fixez-lui un CHMOD de 0444 pour être sûr que WordPress ne le modifie automatiquement lors de l’installation d’un plugin ou lors d’une mise à jour des permaliens.

Source : Configurer Apache – Guide .htaccess – Les directives.


Retour à La Une de Logo Paperblog

LES COMMENTAIRES (2)

Par Jack
posté le 01 février à 19:36
Signaler un abus

Merci pour ce billet très instructif ; toutefois tu dis (bas de la page - Etape 3) qu'il faut passer le fichier .htaccess en CHMOD 0444. Or ce chmod n'existe pas (toujours 3 chiffres). Est ce 044 ou 444 ?

Par Testar
posté le 08 janvier à 16:37
Signaler un abus

Page très utile et claire, un grand merci! Vous pourriez peut-être la compléter avec la réponse à ma question. Ce n'est pas un wordpress mais des pages html simples en sous domaine. Le wordpress est en domaine. J'ai des Rewrite Rules du type RewriteRule ^confirmation$ /page/confirmation.html, pour enlever le dossier page de l'url. J'ai un petit script js à la racine de ce sous domaine. Je n 'arrive pas à "router" le script, pour les pages en sous dossier. Quelle est la bonne solution? Merci.

Par Cotillon Rieur
posté le 05 février à 22:41

Bjr, je suis chez 1&1 et je cherche a améliorer mon referencement mais ils me disent que des fichiers htacess empeche les moteurs de recherche de me reconnaitre. Comment les supprimer? Ou sont ils? Je suis sur wordpress et voici mon site: http://lecotillonrieur.org Merci de tous de vos réponses je desespere!!!

A propos de l’auteur


Maccimum 4 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Magazines