Article original publié sur le site dynamique de l’immobilier
Le fichier .htaccess
Cet article a pour but de vous faire découvrir le fichier .htaccess et son utilisation pour améliorer votre site web.
Ce simple fichier texte [1] vous permet d’ajuster finement certains paramètres de votre serveur Apache tels que les redirections, les réécritures d’URL, les redirections et les restrictions d’accès.
Cette puissance permet le meilleur comme le pire. Même si la syntaxe des règles du fichier .htaccess est souvent triviale, la moindre faute dans celles-ci se traduira le plus souvent par la redoutée "erreur 500" [2].
L’une des utilisations les plus répandues de ce fichier est l’affichage d’une page 404 [3] personnalisée, beaucoup plus utile que celle procurée par défaut par votre navigateur favori.
Note aux utilisateurs FrontPage
Lorsque les extensions FrontPage sont installées, un fichier .htaccess est créé à la racine du site. Il faut donc être très prudent et éviter d’écraser ce fichier, faute de quoi les extensions FrontPage ne fonctionneraient plus sur votre site. De même, avant toute modification, une sauvegarde du fichier originel est utile, car toute erreur dans ce fichier pourrait rendre l’entièreté de votre site inaccessible. |
Votre hébergement permet-il son utilisation ?
C’est, bien sûr, la première question à se poser. Elle ne fait malheureusement pas partie de celles auxquelles on peut répondre simplement.
Si votre hébergement se fait sur un système Unix/Linux et que le serveur Web est de type Apache, le fichier .htaccess est supporté. Ceci ne veut malheureusement pas dire que votre hébergeur en autorise l’utilisation.
Le plus souvent, les hébergements gratuits ont cette fonctionnalité désactivée.
Si votre hébergeur vous permet de restreindre l’accès à certains de vos répertoires à l’aide d’un mot de passe, c’est en général à l’aide du fichier .htaccess, dans ce cas, tout va bien.
De deux choses l’une : soit vous téléchargez votre fichier .htaccess et tout fonctionne comme vous l’espériez, soit cela ne fonctionne pas et au pire vous obtenez une "erreur 500". Dans ce cas, il ne vous reste plus qu’à retirer le fichier incriminé. Ce n’est pas bien dangereux, mais réservez vos essais à une période creuse. Le seul cas où un fichier .htaccess pourrait poser de réels problèmes est celui où le serveur utilise des extensions Microsoft FrontPage.
Ces dernières utilisent le fichier .htaccess et son écrasement les empêcherait à jamais de fonctionner.
Si vous n’aimez pas vivre dangereusement, le plus simple reste encore de demander à votre hébergeur ou à une connaissance ayant le même type d’hébergement que vous.
Pour effectuer vos tests, il est judicieux de créer un répertoire temporaire sur votre site, dans lequel vous mettrez un fichier index.html et le fichier .htaccess sur lequel vous travaillez.
Une fois votre fichier .htaccess mis au point, déplacez le dans le répertoire que vous voulez protéger, ou à la racine de votre site. |
C’est supporté ? Bien ! Restez avec nous !
Avant toutes choses, il faut arriver à créer ce fichier. Sous pratiquement tous les systèmes d’exploitation, cela se fait sans problème comme n’importe quel fichier texte.
Windows peut toutefois ne pas accepter la création de ce fichier tel que souhaité. En effet, .htaccess est vu par Windows comme un fichier sans nom comportant une extension non standard. Si notepad ou votre éditeur favori ne vous permet pas d’enregistrer ce fichier avec le nom souhaité, sauvez-le comme htaccess.txt, vous le renommerez plus tard sur votre serveur à l’aide de votre logiciel de transfert ftp.
Attention : Une fois renommé, le fichier doit impérativement se nommer « .htaccess » (débutant par un point), sinon il sera sans effet.
Nous allons commencer notre découverte avec une fonctionnalité bien utile
La page d’erreur « sur mesure »
Comme tout internaute, vous avez déjà eu l’occasion de faire face à l’erreur la plus répandue, l’erreur 404. Cette erreur vient du fait que l’Internet est essentiellement mouvant, des millions de pages y apparaissent et disparaissent chaque jour.
Si un de vos visiteurs décide de mettre en favori l’une de vos pages pour y revenir plus tard, rien ne lui garantit que cette page sera toujours accessible à sa prochaine visite.
Vous pouvez à tout moment décider de la déplacer, de la renommer ou de la supprimer. C’est votre site, vous en avez le droit le plus absolu.
Que se passera-t-il lors du retour de ce même visiteur ? C’est simple : son navigateur fera une requête pour la page souhaitée, requête à laquelle le serveur répondra « pas trouvé ».
Dès la genèse du Web, les différents concepteurs ont bien intégré le fait que les utilisateurs seraient d’origines différents et qu’une page mentionnant ce laconique « pas trouvé » ne pourrait pas être exhaustive sur le plan linguistique. Ils ont donc défini des codes pour chaque type d’erreurs, laissant aux navigateurs le soin d’afficher le message dans la langue de l’utilisateur. D’où, dans ce cas précis, l’erreur communément appelée « erreur 404 ».
Pour éviter à vos visiteurs cette page peu esthétique, une seule ligne suffit dans le fichier .htaccess :
ErrorDocument 404 /mapage.html
Dès ce moment, toutes les requêtes pour des pages inexistantes recevront en retour la page mapage.html. Si vous êtes prévoyant, cette page pourrait présenter un plan de votre site qui évitera à votre visiteur de se sentir seul et abandonné de tous. Il faut bien sûr que ce fichier « mapage.html » existe à la racine de votre site sinon votre serveur ne saura plus où donner de la tête. Ne souriez pas, c’est arrivé à l’auteur de ces lignes.
D’une manière plus générale, l’instruction « ErrorDocument » s’écrit :
ErrorDocument code-erreur fichier
En plus de l’erreur 404, vous pouvez donc fournir des pages spécifiques pour les erreurs les plus fréquentes, par exemple :
401 - Autorisation Requise
400 - Mauvaise requête
403 - Interdit
500 - Erreur interne serveur
La restriction d’accès par mot de passe
Nous avons tous sur nos sites certains répertoires que nous souhaitons protéger des yeux indiscrets. Qu’il soit bien entendu ici, que la meilleure protection possible pour un document passe par la non publication sur le Web, quelle que soit le niveau de protection du serveur ou du répertoire.
Ceci est encore plus vrai s’il s’agit d’un hébergement mutualisé dont la gestion est assurée par un organisme indépendant. Ne stockez donc pas sur votre serveur Web d’informations dont la divulgation pourrait vous pénaliser.
Ces limitations étant exprimées, il est souvent utile ou dans certains cas indispensable d’avoir dans un répertoire des informations telles que le mot de passe d’accès à votre base de données ou les statistiques de fréquentation de votre serveur.
Dans le cadre des hébergements sur serveur Apache, il est aisé de soustraire certains répertoires à la curiosité du public. Cette fois encore, le fichier .htaccess est votre allié.
Le mode opératoire en est simple et s’appuie sur un deuxième fichier qui contiendra les noms et mots de passe des personnes autorisées à accéder au contenu du répertoire.
Dans le fichier .htaccess, saisissez les informations suivantes :
AuthUserFile /home/login/.htpasswd
AuthGroupFile /dev/null
AuthName "Acces Restreint"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>
Analysons de plus près ces quelques lignes :
AuthUserFile /home/login/.htpasswd
donne le répertoire dans lequel se trouve le fichier contenant les paires login/mot de passe des visiteurs autorisés. Notez bien qu’il ne s’agit pas d’une URL, mais bien d’un chemin d’accès depuis la racine du serveur.
L’usage veut que ce fichier soit souvent nommé .htpasswd, mais ce n’est pas du tout une obligation. Il est même conseillé d’utiliser un autre nom, le fichier sera d’autant plus difficile à trouver. Ne le mettez pas dans un répertoire qui fait partie du site mais placez-le plutôt en dehors de cette arborescence si vous en avez le choix.
Dans le système d’exploitation Unix/Linux, tous les fichiers dont le nom commence par un point décimal sont des fichiers cachés. Attention : caché ne signifie pas invisible, mais signifie plutôt qu’ils n’apparaissent pas dans les commandes les plus fréquentes si leur affichage n’est pas spécifiquement demandé. |
AuthGroupFile /dev/null
permet de donner un droit d’accès à un ensemble d’utilisateurs faisant partie d’un même groupe et est rarement utilisée dans le cas de sites Web personnels. Dans l’exemple, le fichier « /dev/null » est l’équivalent Unix de « nulle-part » ou « pas de fichier spécifique »
AuthName "Acces Restreint"
est la chaîne de caractère qui apparaîtra dans la boîte de dialogue au moment de la saisie du nom et du mot de passe.
AuthType Basic
détermine le type d’authentification utilisé, dans notre cas l’authentification HTTP standard.
<limit GET POST> ... </limit>
détermine le type d’opérations permises. GET s’applique à la majorité des pages Web, PUT est utilisé par certains scripts ou éditeurs pour faire de l’upload sous protocole http. Il est important de mettre GET et POST en majuscule sur les dernières versions d’Apache.
require valid-user
signifie littéralement qu’un utilisateur valide est requis, à savoir un utilisateur pour le nom duquel une ligne existe dans le fichier .htpasswd. Une variante pourrait être :require user pierre paul
pour limiter l’accès aux seuls utilisateurs pierre et paul
Le fichier .htpasswd
C’est très simple, pour chaque utilisateur autorisé ce fichier contient une ligne sous la forme « nom:mot de passe crypté » ou encore « pierre:saqKFoHV4rU.E »
La seule difficulté, pour autant que c’en soit une, étant de crypter le mot de passe. Il existe deux types d’approche différents :
- Vous avez accès a un shell Unix/Linux
htpasswd -c passwdfile username
Dans cette commande, « passwdfile » représente le chemin complet du fichier mot de passe souhaité, « username » est le nom de l’utilisateur.
- Pour tous ceux qui n’ont pas d’accès au shell unix, plusieurs sites sur le Web vous permettent d’obtenir le mot de passe encrypté, par exemple : http://ovh.fr/cgi-bin/crypt.pl
Vous voilà en mesure de restreindre l’accès à vos répertoires privés ou, pourquoi pas, de créer des répertoires réservés aux copains ou aux membres de votre famille.
Vous avez déplacé vos pages ?
Il est parfois nécessaire de déplacer certaines pages ou répertoires d’un site dans l’optique d’une restructuration. Ceci ne va pas sans poser quelques problèmes inhérents au changement d’adresse :
- la page n’est plus accessible pour les visiteurs qui l’ont mise dans leurs favoris.
- les références à cette page dans les moteurs de recherche et annuaires pointent vers l’ancienne adresse.
Dans ces deux cas de figure, plutôt que de présenter une page d’erreur personnalisée au visiteur, il est beaucoup plus élégant de le rediriger automatiquement vers la nouvelle adresse. Ici encore, le fichier .htaccess nous sera précieux.
Pour déplacer une page :
RedirectPermanent ancien.html http://www.domaine.tld/nouveau.html
Cette directive signale au navigateur que la page ancien.html a été renommée nouveau.html et renvoie l’entête correcte au navigateur pour signaler ce fait (entête 301 « déplacement permanent »). L’avantage de cette approche est que les robots d’indexation des différents moteurs apprendront que cette page a été déplacée et modifieront leur index pour refléter la nouvelle adresse. Dans le cas de Google, le PageRank [4] de l’ancienne page sera automatiquement transmis à la nouvelle page.
Pour déplacer un répertoire :
RedirectPermanent /ancien http://www.domaine.tld/nouveau/
Il est important de noter que dans le cas d’utilisation de la directive RedirectPermanent, la nouvelle adresse de page ou de répertoire doit être une URL complète.
Pour changer de nom de domaine :
RedirectPermanent / http://www.nouveaudomaine.tld/
Cette directive redirigera la racine de l’ancien site vers le nouveau domaine.
Note : Seuls les moteurs de recherche ajusteront leur index pour refléter la nouvelle adresse. N’oubliez pas de demander aux annuaires de modifier leurs liens vers vos pages. |
Pour des redirections plus avancées, découvrez la suite de l’article : La réécriture d’URL
Discussions par date d’activité
30 discussions
Les explications sont super mais ne prennent pas en compte le cas (qui doit être pourtant très courant) de la protection de son dossier « images » d’un site.
je cherche en effet le moyen d’empécher que le serveur apache ne liste mon dossier « images » de mon site losque l’on tape l’URL :
www.monsite.com/images/
mais qu’il soit toujours possible au pages de mon site d’accéder à ce répertoire pour que mes images s’affiche correctement ! :-)
Merci de m’aider
met une page index.html dans ton rep d’images, comme
ça elle sera automatiquement chargée lors de l’appel de
ton repetoire depuis un navigateur.
En fait moi aussi j’ai un problème du genre, à savoir que je voudrais empêcher des personnes d’utilier directement un lien vers une vidéo depuis un site distant sans passer par mon site.
Il faudrait que le htaccess permette le téléchargement des vidéos que depuis la page vidéo (se trouvant dans le mêe répertoire que les vidéos.
Merci d’avance
il suffit de placer l’instruction suivante dans un fichier .htacces à la racine du site
Options -Indexes
ErrorDocument 403 http://URLdusite
La première ligne empêche de lister le contenu du répertoire (en générant une erreur 403 : opération non autorisée)
La seconde ligne renvoie à la page d’accueil du site en cas d’erreur 403
On peut la remplacer par
ErrorDocument 403 http://URLdu site/erreur403.htm
à la condition d’avoir créé un fichier « erreur403.htm » qui peremettra d’afficher un message personnalisé et proposera soit un lien vers la page d’accueil, soit une redirection automatique au bout de X secondes en plaçant dans l’entête de la page l’instruction suivante ;
<meta http-equiv=« refresh » content=« X ; URL=http:/URLdusite »>
(bien penser à remplacer X par un nombre de secondes )
Répondre à ce message
Bonjour, et merci pour cet article très clair sur les utilisations de .htaccess et .htpasswd.
Le problème se pose sous SPIP lorsque une seule partie du site (rubrique, sous-rubrique(s), article(s), etc ) doit être protégée et pas la totalité du site, puisque tous ces fichiers sont dans un même répertoire.
Le but, vous l’aurez compris, est de protéger une partie du site public, de préférence avec un accès via une page « propre » mise en page. Ces fichiers permettent ils cette folie, et comment ?
Amicalement
Avez-vous trouvé une solution à votre problème ?
J’ai le même problème, je voudrais restreindre l’accès à un partie du site, si quelq’un avait la solution, merci.
Bonjour,
Si j’ai bien compris tout ce qui vient d’être dit à mon pauvre cerveau lol...
Les fichiers dont l’accès doit être réservé doivent se trouver dans un repertoire à part. Car on intredit ici l’accès à un répertoire et non à un fichier...
Corrigez-moi si je me trompe...
Curieux en effet que personne ne réponde à cette question car elle semble basique. J’ai aussi ce problème. Je tente donc une reformulation :
Puisque Spip est un site dynamique, il n’utilise pas des répertoires différents pour chaque rubrique. Comment fait-on alors pour que les utilisateurs s’authentifient pour accèder au site entier, mais ne s’authentifient pas pour accéder à une rubrique ou un article particuliers de ce même site ?
Exemple : j’ai mis un htaccess à la racine de mon site. Il fonctionne très bien et les utilisateurs doivent s’authentifier pour accéder au site. Mais... je voudrais que n’importe quel utilisateur accède sans authentification à la rubrique 5.
Une réponse prompte me remplirait d’allégresse...
Bonjour à tous
Le problème soulevé ici m’intéresse grandement je voudrais moi aussi protéger une partie du site public plus précisement une rubrique.
Plusieurs questions ont été posées sur ce même sujet, y a-t-il une solution ? Est ce que c’est possible de le faire ?
Merci beaucoup de votre réponse
Delph
Répondre à ce message
Quelqu’un aurait il une solution pour des fichiers .htaccess dans des répertoires imbriqés ?
Problème :
arborescence du site http://mon_truc.org :
- répertoire web/ => contient le site principal, c’est le répertoire racine du SPIP. Pour l’instant ce dossier doit rester privé : accès restreint par .htaccess avec les directives :
AuthType Basic
AuthName « zone de developpement »
AuthUserFile /home/web/prive.mon_truc.org/htaccess/.htusers
AuthGroupFile /home/web/prive.mon_truc.org/htaccess/.htgroups
require group admins persos visits
- répertoire web/mon_bidule.mon_truc.org/ => ce répertoire doit être accessible sans identification. Sur ce répertoire pointe le sous-domaine mon_bidule accessible donc par http://mon_bidule.mon_truc.org
- répertoire web/prive.mon_truc.org/htaccess/ => stocke les fichiers .htusers et .htgroups, est lui-même protégé par un .htaccess
Cette config fait donc que l’ensemble du site http://mon_truc.org/ est en accès protégé avec nécessité de se logger + d’appartenir à un des groupes admins, persos ou visits
Ce qui entraîne que l’accès http://mon_bidule.mon_truc.org est lui aussi bridé par cette restriction.
Alors ma question est : quelles directives mettre dans le fichier web/mon_bidule.mon_truc.org/.htaccess pour autoriser l’accès sans mot de passe sur la partie du site contenue dans ce dossier ?
Et même question subsidiaire, cette « levée de restriction d’accès » par un .htaccess dans un sous-dossier d’un répertoire à accès contrôlé est elle possible ? (je précise que je n’ai pas d’accès au fichier httpd.conf du serveur apache)
Répondre à ce message
Bonjour,
D
abord merci pour ce site vraiment genial, qui a le merite d
etre clair. Mais jai un petit probleme, voila, j
ai reussi a proteger des pages de mon site par le biais dun mot de passe, mais le probleme c
est que ce mot de passe ne fonctionne pas ! on doit bien evidemment rentrer le mot de passe NON crypte ? non ? Si quelquun voit d
ou cela peut venir, venez moi en aide !Merci pour votre aide
Cyrille
Tout dépend du système d’exploitation que tu as. Si tu es sous Windows, il ne faut pas crypter les mots de passe dans le .htpasswd. Windows n’arrive pas à les identifier sinon :s Fait un test et tu verras :)
Bonjour,
J’ai bien suivi votreprocédure, mais lorsque je rentre le mot de passe dans la boîte de dialogue, , ça ne fonctionne pas et au bout de 3 essais, j’ai l’erreur d’authentification.
Je suis sous Win XP, le serveur qui héberge SPIP est mutualisé. Apache.
J’ai essayé de mettre le mot passe non crypté, mais rienn’y fait, je ne passe pas.
Merci d’avance pour votre aide.
J’ai même essayé de ne pas en mettre
login :« rien »
et require user login
Ce passe pas non plus.
Je reçois bien ma boîte, mais je n’arrive pas à la dépasser
HELP
Répondre à ce message
Bonjour
Est il possible que le fichier .htaccess ne demande pas le login et mot de passe ?
peut on lui spécifier le mot de passe directement dans le fichier ?
Mon problème est que j’ai des CGI et j’aimerai que lorsque j’y accede il ne me demande pas de login et mot de passe.
Merci
Répondre à ce message
Windows n’accepte pas de créer un ficher commençant par un point. Ce qui est extrémement génant lorsqu’on veut par exemple tester les fonctionnalités de htaccess en local.
Heureusement, php sait comment créer un fichier, peut importe son nom.
Le code suivant va donc permettre ’d’outrepasser’ les limitations de windows :
Selon moi, le plus simple est de créer un fichier texte nommé htaccess tout court, ou bien htaccess.txt, puis de le renommer .htaccess via un clic droit dans le navigateur de fichier (« explorateur »)... mais heureusement pour moi j’ai laissé tombé cette vieille bourique de windows depuis des lunes :-)
Répondre à ce message
tout cela est bien joli mais concretement et surtout simplement comment restreindre l’acces a certaines rubriques dans l’espace prive des rubriques uniquement accesssible aux administrateurs et non aux redacteurs
merci de votre aide
Répondre à ce message
Bonjour je n’ai jamais réaliser de site internet que ce soit sur SPIP ou non. Cependant j’ai une idée très précise de la structure que j’aimerai faire pour mon site. Je veut avoir une page public ou tout le monde peut avoir accès. Ensuite une page Membre accessible qu’aux membres avec un mot de pass(de la page public). Et pour finir un espace privé ou juste les auteurs et les administrateurs auront accès.
Ma question est la suivante : Est ce que ta contribe peut me servire pour limiter l’accès de ma page privé aux membres ? cad plusieur groupes de membres n’ont accès que à un espace qui leur est reservé
Merci d’avance de bien vouloir me repondre sur ce forum ou m’envoyer un mail/
Je suis à la recherche également d’une solution pour ce problème.
A mon avis .htaccess ne permet pas de créer un espace membre comme tu le souhaites, puisque le site n’est pas organisé sous forme de répertoires.
Il y a par contre la contrib gestion hierarchisée des accès restreints non encore validée qui permet de gérer des accès restreints, mais c’est assez lourd s’il doit y avoir un grand nombre de membres.
J’ai vu aussi qu’il existait des scripts en Php pour créer des espaces membres, mais je ne sais pas si ça fonctionne avec Spip.
Répondre à ce message
Bonjour,
je n’y comprends rien : pour tout simplifier, j’ai mis le .htaccess et .htpasswd dans le répertoire www.
Quand je vais directement sur le site public, le .htaccess marche bien : je saisis mes identifiants et j’accède au site.
Quand je clique sur « espace privé », j’ai le message « connexion refusée - Ressayer ». Questcekeçavedire ?????
A noter que sans fichier .htaccess/.htpasswd, tout marche très bien.
Pour info, voici mon htaccess :
AuthUserFile /home/www-data/htdocs/www.monsite.org/.htpasswd
AuthGroupFile /dev/null
AuthName PasswdProtection
AuthType Basic
require user nla
idem pour moi, je confirme le problème.
Si je trouve, je te dirai ;o)
ça y est, j’ai trouvé, c’est tout écrit dans la doc SPIP, faut juste trouver :
tu dois créer un fichier mes_options.php3 dans le dossier ecrire de ton site SPIP qui contient :
pour que SPIP ignore le .htaccess
voir la doc http://www.spip-contrib.net/article455.html
Salut
Répondre à ce message
Rebonjour,
Quelqu
un peut-il m
eclairer sur la ligne :AuthUserFile /home/login/.htpasswd
car je ne comprends pas du tout ce qu`il faut faire avec cela !
merci.
Tu peux aller faire un petit tour à cette adresse
http://www.infres.enst.fr/ danzart/frames/htaccess.html
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |