htaccess

Apache est le serveur web le plus utilisé au monde. Son succès est dû à la possibilité de rajouter des modules et de le paramétrer via des fichiers de configuration. Les hébergeurs ne donnent pas l’accès à l’administration du serveur sur les mutualisés, il existe cependant un moyen pour les webmasters de faire leurs paramétrages : le fichier .htaccess.

Un fichier htaccess qu’est ce que c’est ?

.htaccess est un fichier de configuration pour serveur Apache. Il permet d’indiquer au serveur des commandes à effectuer (protection de répertoire, création de pages d’erreurs, de redirections etc.).

Comment créer un fichier .htaccess ?

Créez un nouveau fichier texte, insérez dedans les instructions pour le serveur Apache, puis enregistrez ce fichier sous le nom de « .htaccess ». S’il vous est impossible d’enregistrer votre fichier sans extension et avec un « . » devant, enregistrez le en « htaccess.txt ». Copiez celui-ci sur votre serveur, puis renommez le en « .htaccess ».
Ce fichier est à placer dans le répertoire où il doit s’appliquer.

Protection par htaccess

Listing répertoire
Vous pouvez empêcher les visiteurs de voir le contenu d’un répertoire. Par exemple vous avez un dossier « images » et vous ne souhaitez pas que celles ci soient accessibles en tapant l’adresse http://monsite.com/images. Pour empêcher cet affichage, créez un fichier .htaccess dans le répertoire en question, et ajoutez simplement les lignes suivantes :

Options -Indexes

Protéger un répertoire avec une authentification sécurisée

Il est possible de protéger un répertoire par mot de passe avec le fichier .htaccess, qui contiendra les règles, et un fichier .htpasswd qui contiendra les listes des utilisateurs autorisés à consulter le répertoire.

→ Le fichier .htpasswd

Il peut se placer n’importe où sur votre hébergement. Retenez bien son chemin absolu (Celui-ci peut être trouvé en plaçant un fichier script « chemin.php » : <?php echo realpath(‘chemin.php’); ?> dans le répertoire ou se trouve le .htpasswd. http://monsite.com/images/chemin.php affichera le chemin absolu). Un fichier .htpasswd peut être utilisé par plusieurs fichiers .htaccess. Remplissez le par les noms des utilisateurs, et leur mot de passe crypté sous la forme :

 utilisateur:motdepasse

Il est possible de crypter votre mot de passe via le panel client PHPNET. Sélectionnez votre hébergement, et cliquez sur le bouton « crypter un mot de passe ». Exemple : utilisateur « johndoe » et mot de passe « phpnet » :

johndoe:$apr1$ZSVqVUKq$kWT8PyO3NWyRsFYboo3uK.

→ Le fichier .htaccess

Il doit être placé là où il doit prendre effet. Voici le code pour protéger mon dossier images :

AuthName "Dossier image protégé"
AuthType Basic
AuthUserFile "/home/www/images/.htpasswd"
Require valid-user

– La ligne AuthName affiche le texte entre guillemets dans la fenêtre d’authentification.
La ligne AuthUserFile contient le chemin du fichier précédemment défini.
– Dans le cas d’un hébergement mutualisé standard : /home/usersX/x/xxx/www/
– Dans le cas d’un hébergement Premium, le chemin absolu sera sous la forme : /home/www/repertoire_secret/
En tapant l’adresse  http://monsite.com/images/ vous aurez une fenêtre de connexion qui s’ouvrira. Pour entrer dans le dossier images, il faudra mettre le nom d’utilisateur : johndoe, et le mot de passe (non-crypté!) : phpnet.

Bloquer des adresses IP

Pour empêcher certaines adresses IP d’aller sur votre site, renseignez ces lignes dans votre fichier .htaccess :

Deny from adresse_IP

Exemple : Deny from 10.128.15.38
bloquera la personne ayant cette adresse IP.

Il est possible de bloquer des plages entières : Deny from 10.128.15 permet de bloquer toutes les adresses IP commençant par 10.128.15
Modifiez le mot de passe de la base en allant dans le BO : pour autoriser des IP, il faut simplement remplacer Deny par Allow.

Exemple : Je ne souhaite autoriser que mon IP et celle d’un collègue :

order deny,allow
Deny from all
Allow from 192.168.1.2
Allow from 192.168.1.25

La ligne order deny, allow spécifie au serveur qu’il faut d’abord bloquer les IP, puis en accepter.

Redirections

Redirection permanent (ou 301)

La redirection 301 permet de rediriger une page ou un domaine vers une autre URL, en indiquant aux moteurs de recherche de mettre à jour leurs liens.

RewriteEngine On
Redirect permanent /fichier.html http://www.domaine.com/nouveaufichier.html

-> Pour rediriger http://monsite.fr/index.html vers http://monsite.fr

RewriteCond %{REQUEST_URI} index\.html
RewriteRule ^(.*)index\.html$ http://monsite\.fr/ [R=301,L]

Redirection www
Redirigez votre site exemple.fr vers www.exemple.fr :

 Rewritecond %{HTTP_HOST} ^exemple.fr$
 Rewriterule ^(.*) http://www.exemple.fr/$1 [QSA,L,R=301]

Redirection d’un domaine vers un autre

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.domaine\.com
RewriteRule (.*) http://www.nouveau-domaine.fr/$1 [R=301,L]

Pages d’erreur

Vous pouvez personnaliser vos messages d’erreur en plaçant ces lignes dans votre .htaccess :

ErrorDocument numero_erreur destination

« numero_erreur » correspond au code erreur, et « destination » à la page vers laquelle l’erreur renvoie.

Exemple :
403 : accès interdit
404 : page introuvable
500 : erreur interne du serveur

Donc, si je souhaite que les visiteurs soient dirigés vers ma page introuvable.html lors d’une erreur 404, ça donne cela : ErrorDocument 404 http://domaine.com/introuvable.html

Spécifier un fichier index différent

Il est possible de modifier le fichier index si vous souhaitez que celui-ci soit différent de index.html, index.htm ou index.php. Pour cela placez ces lignes dans votre fichier .htaccess :

DirectoryIndex nom_du_nouvel_index

Redirect gone

Si un fichier n’existe plus, cette technique permet aux moteurs de recherche de se mettre à jour, et d’indiquer aux visiteurs que le document a été supprimé. Indiquez alors dans le .htaccess :

Redirect gone /supprime.html

« supprime.html » étant le fichier qui a été supprimé. Pour personnaliser le message d’erreur, sachez que le code erreur renvoyé est 410.

Redirect Temp

Il s’agit d’une redirection temporaire, permettant de diriger toutes les requêtes vers un autre site ou page. Utile lorsque vous souhaitez afficher une page de maintenance, ou que vous déplacez votre site temporairement sous un autre nom de domaine. Les moteurs de recherche ne mettront pas à jours leur index.

Redirect temp / http://site.com/
Redirect temp /repertoire/page-a-rediriger.html http://site.com/repertoire/page-de-destination.html

Réécriture d’url

Vous pouvez modifier l’apparence de vos adresses URL. Cela peut être utile pour le référencement et la protection de vos pages. Ce type d’instruction est à mettre dans votre fichier .htaccess :

RewriteEngine on
Rewriterule ^contacter-phpnet.html$ contact.php

Cette règle permet lorsqu’un visiteur tape l’adresse « contacter-phpnet.html », de traduire l’instruction en contact.php sans modifier l’URL dans le navigateur.

Les fichiers .htaccess sont donc des fichiers de configuration d’Apache qui permettent de définir des règles pour des répertoires du site web. Ils sont à utiliser généralement pour mettre en place :

  • des droits d’accès
  • des redirections
  • des messages d’erreur personnalisés

Historiquement, chez PHPNET, le fichier .htaccess pouvait être également nommé htaccess.fi