Tutoriel : le fichier .htaccess

Pour divers tutos

Tutoriel : le fichier .htaccess

Messagede Vally8 le 16 Aoû 2005 20:40

Il existe un moyen de donner des droits à certains fichiers web, de rediriger certaines pages vers d'autres, d'interdire l'utilisation d'aspirateurs de site, ou interdire l'acces à certaines pages tout court :
ce fichier s'appelle .htaccess..

sous windows, il est impossible de le creer : il faut l'appeller toto.htaccess, l'uploader chez vous, et la le renommer en .htaccess

Concretement, le htaccess peut etre tres utile, notamment pour reecrire les adresse : par exemple, il existe des choses dans le htaccess qui réécrivent les noms des fichiers dans la barre d'adresse (c'est vachement bien pour les forums en phpbb : au lieu que tua page s'appelle viewtopic?t=15, elle s'apelle Comment-trouver-les-inventeurs.php

ou comment trouver les inventeurs était le sujet du topic....

(tout cela est tres utile pour un tres bon reférencement par google)

sinon, Zeus, puisque c'est pour toi que j'ai crée ce topic (Ryoko, ca pourrait te servir aussi), ca peut servir à rediriger les erreurs : par exemple pour la page inexistante, moi sur le site, j'ai mis cette page :
http://vally8.free.fr/script/404.php

donc 404 est une page qui n'existe pas : ici, si la page n'existe pas, tu seras redirigé sur ma page personnalisée...

Cela s'ecrit comme ca dans le fichier .htaccess

Code: Tout sélectionner
ErrorDocument 404 http://vally8.free.fr/script/404.php


il existe d'autres types d'erreurs de ce genre pour lesquels tu peux rediriger, les erreurs de type 500 ( Erreur de serveur interne ) ou les 403 (quelqu'un essaye d'acceder à une page que vous n'authorisez pas)

moi pour ces cas là, je redirige sur la page d'accueil du site :

Code: Tout sélectionner
ErrorDocument 403 http://vally8.free.fr/index.php
ErrorDocument 500 http://vally8.free.fr/index.php



Il existe plein d'autres erreurs configurables :

400 : BAD REQUEST : La syntaxe de la requête est mal formulée ou est impossible à satisfaire

401 : UNAUTHORIZED : Le paramètre du message donne les spécifications des formes d'autorisation acceptables. Le client doit reformuler sa requête avec les bonnes données d'autorisation

402 : PAYMENT REQUIRED : Le client doit reformuler sa demande avec les bonnes données de paiement

403 : FORBIDDEN : L'accès à la ressource est tout simplement interdit

404 : NOT FOUND : Classique! Le serveur n'a rien trouvé à l'adresse spécifiée. Parti sans laisser d'adresse ... :)

500 : INTERNAL ERROR : Le serveur a rencontré une condition inattendue qui l'a empéché de donner suite à la demande (Comme quoi il leur en arrive des trucs aux serveurs ...)

503 : SERVICE TEMPORARILY UNVAILABLE : le service à été coupé...

mais il faut savoir qu'en général, cela ne sert à rien de rediriger les erreurs 500 et des poussieres : le serveur ne répond pas, il ne saura pas aller chercher dans le .htaccess les informations nécessaires :goutte:

il existe d'autres fonctionnalités de ce fichier : si ca vous interesse, je pourrais completer ce post par "Proteger un repertoire par un mot de passe" et "Bannir des adresses IP / N'autoriser que certaines IP"...

Juste un mot : le .htaccess est valable pour tous les fichiers et sous repertoires par rapport à là où il est placé. Cependant, si dans un sous répertoire vous voulez "cacher des choses" : vous pourrez uploader un nouveau htaccess avec de nouveaux droits qui seront valables pour ce repertoire et tous les sous repertoires de celui ci

:ok:

bon si quelque chose n'est pas clair, n'hesitez pas à me le dire :)


*******************************************************
Proteger un repertoire par un mot de passe

1. Créer le fichier de mots de passes...
(Attention, il faut bien sur creer ce fichier avec notepad sous windows)

La structure du fichier est la suivante :
utilisateur:passwordcrypté

avec une ligne par utilisateur...
pour crypter le mot de passe, si vous etes sous linux, il existe l'utilitaire htpasswd qui va vous demander un mot de passe, et ce meme mot de passe pour confirmation : la syntaxe est la suivante :

Code: Tout sélectionner
htpasswd -c .htpasswd utilisateur


Pour ceux qui n'ont pas de linux sous la main, de nombreux sites internets proposent ces "crypteurs" : http://home.golden.net/generator/ par exemple.... mais il me semble qu'une fonction php permet de le faire (je ferais des recherches et je vous dirais)

Pour un site chez free :
Free a mis en place un systeme "facilitant" le htaccess, les mots de passes ne sont pas cryptés dans le fichier. Votre fichier aura donc cette allure :

utilisateur:password

Par convention, on appelle ce fichier .htpasswd, mais comme chez free, les mots de passe ne sont pas cryptés, mieux vaut lui donner un nom farfelu...

Placez ensuite ce fichier dans un repertoire (un sous repertoire du repertoire a proteger)

par exemple, je veux proteger le repertoire "monrep" : je crees un dossier "zer" dans lequel je mets le fichier de mots de passe que j'appelle ".toto" (le fait de l'appeller .quelquechose le cache un peu)

c'est pas tout ca, mais la, tout le monde peut lire mon fichier de mot de passe (à condition de savoir le nom tout de meme) : on va creer un fichier .htaccess pour interdire à tout visiteur de lire dans ce repertoire :

dans le dossier "zer", faites un .htaccess contenant :
Code: Tout sélectionner
deny from all


c'est assez explicite : personne (meme pas vous) ne pourra rentrer dans cette partie du site avec un navigateur

Voilà qui est fait pour la partie mot de passe :)
Maintenant il ne reste plus qu'à mettre en place la restriction d'acces

2. Le fichier .htaccess ( dans "monrep" )
Cas Général (pour les utilisateurs free, voir plus loin) :
a/ Il faut connaitre le vrai chemin de votre site :
Code: Tout sélectionner
<?php
phpinfo();
?>

et cherchez la variable : _SERVER["PATH_TRANSLATED"]
enlevez le nom du fichier : vous aurez votre chemin ;)

et il ne vous reste plus qu'à ecrire dans votre .htaccess :

Code: Tout sélectionner
Authname "Acces Restreint"
AuthUserFile monchemin/zer/.toto
AuthType Basic
require valid-user


Cas Free :
Comme Free a fait "sa sauce" avec le .htaccess, il faut écrire :

Code: Tout sélectionner
PerlSetVar AuthFile zer/.toto
AuthName "Acces Restreint"
AuthType Basic
require valid-user


CONCLUSION

structure des 3 fichiers à creer et des repertoires :

Code: Tout sélectionner
monrep : (le repertoire à proteger)
     * zer :
           * .toto (le fichier des mots de passes)
           * .htaccess (qui interdit la lecture dans tout le repertoire zer)
     * .htaccess (qui definit le fichier de mot de passe et les restrictions)


juste une derniere remarque :
AuthName "Acces Restreint" : l'invite du mot de passe aura pour titre "Acces Restreint" ;)

Voilà ;)
Dernière édition par Vally8 le 17 Aoû 2005 10:13, édité 2 fois.
Moi, j'aime schtroumpfer...
Si vous voulez faire une soluce, plutôt que de m'envoyer un MP, postez-là ici (j'ai rarement le temps de répondre à tous les MP)
Avatar de l’utilisateur
Vally8
Gouroute du Site
Gouroute du Site
 
Messages: 15456
Inscription: 07 Mai 2004 18:14
Localisation: Au pays des schtroumpfs
Jeu(x) du moment: Professor Layton, Tales of Vesperia, Dragon Quest 9

Messagede Zeus le 16 Aoû 2005 21:52

Tres intéressant :oui:
Ca m'interesse de savoir comment protéger un répertoire avec un mot de passe !
Avatar de l’utilisateur
Zeus
Chocobo qui a mangé trop de chocolat
Chocobo qui a mangé trop de chocolat
 
Messages: 5365
Inscription: 05 Avr 2005 14:30
Localisation: Montpellier
Le jeu qui vous a fait connaître le site: Star Ocean 3

Messagede screamX le 17 Aoû 2005 07:45

Moi aussi la partie sécurité m'interresse... ^^
http://www.pgteam.fr.st - screamX, born to ski
Avatar de l’utilisateur
screamX
Chocobo des rivières
Chocobo des rivières
 
Messages: 1059
Inscription: 20 Juil 2005 10:57
Localisation: à la lisière d'un champ de peuf

Messagede Vally8 le 17 Aoû 2005 10:13

eh bien voilà, la partie sécurité a été ajoutée ;)
Moi, j'aime schtroumpfer...
Si vous voulez faire une soluce, plutôt que de m'envoyer un MP, postez-là ici (j'ai rarement le temps de répondre à tous les MP)
Avatar de l’utilisateur
Vally8
Gouroute du Site
Gouroute du Site
 
Messages: 15456
Inscription: 07 Mai 2004 18:14
Localisation: Au pays des schtroumpfs
Jeu(x) du moment: Professor Layton, Tales of Vesperia, Dragon Quest 9

Messagede screamX le 17 Aoû 2005 12:52

Merci...

c'est cette technique qui est utiliser pour empécher d'afficher le contenu d'un répertoire ? (le fameux message : "Forbidden acces ...")
http://www.pgteam.fr.st - screamX, born to ski
Avatar de l’utilisateur
screamX
Chocobo des rivières
Chocobo des rivières
 
Messages: 1059
Inscription: 20 Juil 2005 10:57
Localisation: à la lisière d'un champ de peuf

Messagede Vally8 le 17 Aoû 2005 13:00

en général oui c'est ca, c'est un "deny from all" dans un .htaccess... :D
Moi, j'aime schtroumpfer...
Si vous voulez faire une soluce, plutôt que de m'envoyer un MP, postez-là ici (j'ai rarement le temps de répondre à tous les MP)
Avatar de l’utilisateur
Vally8
Gouroute du Site
Gouroute du Site
 
Messages: 15456
Inscription: 07 Mai 2004 18:14
Localisation: Au pays des schtroumpfs
Jeu(x) du moment: Professor Layton, Tales of Vesperia, Dragon Quest 9

Messagede moi1392 le 17 Aoû 2005 13:05

juste un détail, le fichier .htacces utilise la syntaxe de apache. et cela m'étonnerais que ISS de windoze fasse la même chose...

onc ton tutorial ne marche que pour les serveurs apache ! (pas de panique, serveur apache = 70% des serveurs web du monde)
Avatar de l’utilisateur
moi1392
Gourou SDL
Gourou SDL
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

Messagede Vally8 le 17 Aoû 2005 13:14

effectivement! :D
(mais à la base, c'était pour Zeus, qui est chez free, donc apache :D)
Moi, j'aime schtroumpfer...
Si vous voulez faire une soluce, plutôt que de m'envoyer un MP, postez-là ici (j'ai rarement le temps de répondre à tous les MP)
Avatar de l’utilisateur
Vally8
Gouroute du Site
Gouroute du Site
 
Messages: 15456
Inscription: 07 Mai 2004 18:14
Localisation: Au pays des schtroumpfs
Jeu(x) du moment: Professor Layton, Tales of Vesperia, Dragon Quest 9


Retourner vers Tutoriels

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron