TUTORIEL .HTACCESS, SÉCURISATION RÉPERTOIRE, URL-REWRITING ET GESTION DES ERREURS

Un fichier .htaccess , c'est quoi ?

Un fichier .htaccess est un fichier de configuration propre aux serveurs Apache, pouvant se placer n'importe où dans l'arborescence de votre site. Son action s'appliquera au répertoire dans lequel est stocké le fichier ainsi qu'aux sous-répertoires qu'il contient.
Un fichier .htaccess peut aisément être modifié alors que le serveur s'exécute, cela ne pose normalement aucun problème particulier.

Toute personne habilitée à transférer des fichiers sur un site web (en général le webmaster ou l'administrateur) peut envoyer un fichier .htaccess qui vient alors surcharger la configuration d'origine du serveur.
A chaque requête effectuée sur votre site web ainsi configuré, le serveur va d'abord vérifier la présence d'un fichier .htaccess et ensuite traiter la ou les requête(s) qu'il contient.

Créer un fichier .htaccess

Vous disposez de plusieurs méthodes pour créer un fichier portant une extension .htaccess.

Méthode 1 :
Ouvrez votre éditeur de textes, notepad / bloc-notes puis sélectionnez "Enregistrer sous". Dans la boîte de dialogue de sauvegarde, indiquez ".htaccess" sans oublier les guillemets autour du nom du fichier faute de quoi l'extension .txt sera automatiquement ajoutée.

Méthode 2 :
Ouvrez votre éditeur de textes, notepad / bloc-notes puis sauvegardez votre fichier "htaccess" sans les guillemets. Il sera ainsi nommé htaccess.txt. Vous pouvez ensuite le renommer de 2 manières différentes :

Méthode 3 :
Une fois votre fichier htaccess.txt créé et déposé sur votre serveur web, vous pouvez aller le renommer directement sur le serveur à l'aide de votre client FTP.

Sécuriser un répertoire (et ses éventuels sous-répertoires) avec .htaccess et .htpasswd

C'est l'une des utilisations les plus courantes d'un fichier .htaccess.
Couplé avec un fichier .htpasswd, il assure efficacement et simplement la sécurité de vos répertoires.

Voici de que doit contenir votre fichier .htaccess :

AuthUserFile /votre/chemin/absolu/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Accès interdit !"
AuthType Basic

require valid-user

Ainsi, seuls les membres ayant un accès à la zone protégée pourront se connecter sur les pages concernées.

Créer un fichier .htpasswd

Les méthodes de création du fichier sont rigoureusement identiques à celles du fichier .htaccess, seul le contenu est différent.
Une fois votre fichier .htpasswd créé, il faut lui indiquer le(s) login(s) et mot(s) de passe des personnes habilitées à entrer sur l'espace protégé.
Pour une sécurité accrue, les mots de passe enregistrés dans le fichier .htpasswd se devront d'être cryptés.
Une méthode rapide pour crypter un mot de passe dans les règles est de se rendre sur un des nombreux sites proposant la génération de ces paramètres.
A titre d'exemple, vous pouvez créer vos couples login / mot de passe cryptés à cette adresse : http://cobalt.golden.net/generator/index.cgi

Vos couples créés et cryptés, il suffit de les copier dans le fichier .htpasswd qui sera à placer sur votre serveur web, au même endroit que le fichier .htaccess.

Voilà, votre accès sécurisé est maintenant opérationnel !

Et maintenant, l'url-rewriting...

Littéralement "réécriture d'url", cette technique offre certains avantages, notamment en termes de simplification et de lisibilité par les moteurs de recherche.

Pour faire simple, il s'agit de réécrire une url de type

http://www.votresite.com/produit.php?id=125&cat=6&prod_nom=exemple 

peu digeste et par les moteurs et par les internautes, par une syntaxe plus explicite comme par exemple

http://www.votresite.com/fiche-125-catexemple-exemple.html 

Décortiquons cette nouvelle url :

Comment l'obtient-on ?

La réécriture d'url passe par la création d'un fichier .htaccess qui est à placer à la racine de votre site à l'aide de votre client FTP.
Ce fichier contiendra les lignes suivantes :

RewriteEngine On
RewriteRule ^fiche-([0-9]+)-([A-Za-z0-9]+)-([A-Za-z0-9]+)\.html$
produit.php?id=$1&cat=$2&prod_nom=$3 [L] 

Signification des divers paramètres de réécriture :

Il faudra ensuite veiller à modifier l'ensemble des liens internes à votre site pour les faire pointer vers les nouvelles pages html, en lieu et place des pages originales, dynamiquement générées par Php.

Exemple :

Votre catalogue produits génère une liste ... de produits. Chaque ligne produit contient, entre autres, un lien vers sa fiche détaillée.
Lorsque vous avez programmé votre site, ce lien est construit par exemple comme ceci :

produit.php?id=$id&cat=$cat&prod_nom=$prod_nom 
Il suffit de remplacer cette ligne de code par :
fiche-123-catexemple-exemple.html 
(123 est un exemple qui correspond à l'ID du produit) et le tour est joué !

Attention ! Le module de réécriture d'url n'est pas activé chez tous les hébergeurs et notamment les hébergeurs gratuits !

Gérer ses pages d'erreur avec .htaccess

Pour éviter à vos visiteurs d'arriver sur une page blanche affichant fièrement "Erreur 404" lorsqu'ils indiquent une url tronquée dans leur navigateur, il suffit de créer et mettre en place sur votre serveur une page d'erreur personnalisée et plus conviviale.
La redirection des erreurs est disponible par défaut auprès de l'ensemble des hébergeurs.
Nous créerons donc le fichier "erreur.php" et placerons les lignes de code suivantes dans le fichier .htaccess :

ErrorDocument 401 /erreur.php
ErrorDocument 403 /erreur.php
ErrorDocument 404 /erreur.php
ErrorDocument 414 /erreur.php 
Voilà, c'est la fin de ce tuto, nous espérons qu'il vous aura été utile !