Boite a outils Pages perso

Fonctions - Scripts - Modules - Compléments

Pages d'erreur et restriction d'acces

 

Personnalisation des pages d'erreur

Cette fonctionnalité vous permet de remplacer (entre autres) le message de type 404 (Not found) par un texte personnalisé ou par une redirection sur une autre URL (locale ou externe). On utilise pour cela la commande ErrorDocument dont voici quelques exemples d'utilisation :

ErrorDocument 404 /monfichier404.html
ErrorDocument 404 http://monlogin.free.fr
ErrorDocument 403 /accesrefuse.html

Cette commande doit se trouver dans un fichier .htaccess dans le répertoire dont vous souhaitez rediriger les messages d'erreurs (typiquement la racine de votre site web mais pas obligatoirement). Documentation
Note sur Htaccess. Si vous créez un fichier, créez un fichier texte simple [temp.txt] avec notepad, déposez-le sur votre serveur et ENSUITE renomez-le [.htaccess] Notez la présence du point juste avant htaccess.

Voici les plus courantes:
ERREUR 404 (non trouvée): une page appelée par un lien du site n'a pas été trouvée.
ERREUR 403 ( interdite): Une page protégée par une restriction d'accès

Téléchargez le Fichier à renommer [.htaccess] qui déclare deux fichiers que vous avez préalablement posés sur votre site comme étant vos pages d'erreur 404 et 403: 404.html et 403.html

En manque d'inspiration?

 
 

PROTEGER DES REPERTOIRES OU DES DOCUMENTS PAR MOT DE PASSE

Etape 1 : Création d'une table d'utilisateurs

Il s'agit de stocker une liste d'utilisateurs et leur mot de passe correspondant dans un fichier.
Le fichier ressemble a cela :

martin:PasSw0rd
jean:SecR3t
sophie:H1dDeN

> Premier champ: le nom de l'utilisateur
> Second champ: le mot de passe en clair

Notes:
Vous devez transférer ce fichier en mode ASCII (voir documentation de votre client FTP) pour assurer la conversion des caractères "fin de ligne".
Vous pouvez stocker ce fichier dans n'importe quel répertoire de votre site mais il faudra en spécifier le chemin dans la directive PerlSetVar AuthFile
Assurez-vous de ne pas laisser d'espace ou de tabulations dans ce fichier.


Etape 2 : Activer la restriction d'accès

Pour limiter l'accès aux utilisateurs déclarés dans le fichier passlist, vous devez créer un fichier .htaccess dans le répertoire que vous souhaitez limiter.

Remarques : Sous plate-forme Microsoft Windows, il n'est pas possible de créer directement sur votre ordinateur un fichier portant le nom ".htaccess". Vous devez le créer avec un autre nom, le transférer sur le serveur, puis le renommer.

Attention: Le nom du fichier est .htaccess et le point est le premier caractère du nom de fichier. " ce n'est pas une extension de fichier"

Exemple : Vous créez un fichier toto.txt dans lequel vous saisissez les paramètres de votre futur fichier .htaccess Vous le copiez sur le serveur. Avec votre logiciel FTP renommez le en .htaccess

PerlSetVar 
AuthFile secret/passlist
AuthName "Acces Restreint"
AuthType Basic
require valid-user

La commande PerlSetVar désigne le chemin d'accès à la table des utilisateurs. Il est relatif à la racine de votre site Web. Donc si vous avez stocké votre table d'utilisateurs dans le répertoire secret/password/ sous le nom 'maliste.txt', vous devez modifier la directive PerlSetVar AuthFile en conséquence : PerlSetVar AuthFile secret/password/maliste.txt

La commande require valid-user autorise tous les utilisateurs valides à télécharger les fichiers du répertoire. Vous pouvez aussi utiliser require user martin sophie pour autoriser uniquement les utilisateurs martin et sophie, mais pas jean.

Attention:
Il est fortement conseillé de protéger sa liste de mots de passes en la nommant autrement. Vous pouvez ainsi la stockez dans un sous-répertoire de votre site Web que vous protégerez en créant un fichier .htaccess dans ce sous répertoire, contenant uniquement la ligne : deny from all

Ceux qui veulent aller plus loin, peuvent consulter le guide utilisateur d'Apache qui traite en détail tous les aspects d'authentification.

Mini Foire aux questions

Lorsque j'essaie d'accèder à mon répertoire, j'ai une erreur de type 'Internal server error', qu'est-ce que ca veut dire ?
Votre fichier ".htaccess" n'est pas reconnu par le serveur, il comporte probablement des erreurs.


Voici les quelques points à vérifier:

> La syntaxe des différentes commandes (PerlSetVar,AuthName) est-elle correcte ?
Une erreur d'orthographe empêchera le serveur Web de comprendre votre fichier .htaccess

> L'emplacement de la table d'utilisateurs est-il correctement spécifié ?
Vous devez donner le chemin complet depuis la racine de votre site même si le fichier .htaccess se trouve dans le même répertoire.

> Avez-vous effectué le transfert du fichier .htaccess en mode ASCII ?
Les caractères de "fin de ligne" sont incompatibles entre les différents systèmes d'exploitation. Il suffit de retransférer le fichier en mode ASCII pour corriger ce problème.

> La table d'utilisateurs existe-t-elle ?
> Etes-vous sûr de votre nom de table d'utilisateurs ?
Le serveur fait la différence majuscules/minuscules dans les noms de fichiers et vous devez spécifier le nom complet du fichier en précisant l'extension s'il y a lieu.
Prenez garde aux caractères, espaces et tabulations qui peuvent se trouver dans votre fichier en début et fin de ligne.


Lorsque je rentre l'URL de mon répertoire protégé dans mon navigateur, il me demande bien de m'authentifier mais me refuse à tout les coups, je suis pourtant sûr de mon mot de passe ?
La table d'utilisateurs doit être transférée en mode ASCII sur votre site web. De plus son format est un couple 'nom:mot de passe' par ligne. Veuillez à ce qu'aucun espace ne se trouve avant le nom ou après le mot de passe.

J'ai lu la documentation d'Apache et il n'est fait nulle part mention de PerlSetVar AuthFile et il y est dit qu'il faut donner les mots de passe cryptés dans la table d'utilisateurs !
Nous avons modifié Apache afin d'en permettre une utilisation simple pour tous, ce qui explique la directive PerlSetVar AuthFile. Elle est obligatoire et ne peut pas être remplacée par les équivalents d'Apache.

Ca me gène de laisser les mots de passe en clair dans mon site web, est-ce qu'il y a un moyen pour les protéger ?
Le moyen le plus simple est de stocker votre fichier dans un sous-répertoire qui n'est pas accessible par http. Pour ce faire, il suffit de créer un fichier .htaccess dans le sous-répertoire dont vous souhaitez interdire l'accès et d'y mettre la simple ligne : deny from all .