379 lines
16 KiB
HTML
379 lines
16 KiB
HTML
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|||
|
<head>
|
|||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|||
|
<title>.htaccess</title>
|
|||
|
<link rel="stylesheet" href="../../tuteurs.css" type="text/css" />
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
<div class="navigation">
|
|||
|
<h1>Tuteurs informatique<br /><a href="../../meta/contact.html">Nous contacter</a></h1>
|
|||
|
<hr />
|
|||
|
<ul class="menu">
|
|||
|
<li>
|
|||
|
<a href="../../meta/charte_graphique.html">Utiliser ce site</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="../../actualite.html">Actu et stages</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="../../docs/">Docs à imprimer</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="../../meta/plan_site.html">Plan du site</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="../../search.html">Rechercher</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
<hr />
|
|||
|
<ul class="arbre">
|
|||
|
<li>
|
|||
|
<a href="../../">Les tuteurs</a>
|
|||
|
<ul class="arbre">
|
|||
|
<li>
|
|||
|
<a href="../">Internet</a>
|
|||
|
<ul class="arbre">
|
|||
|
<li>
|
|||
|
<a href="./">Web</a>
|
|||
|
<ul class="arbre">
|
|||
|
<li>
|
|||
|
<a href="conseils.html">Conseils</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="creer.html">Créer une page</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="htaccess.html" class="actuel">.htaccess</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="html/">XHTML</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="lynx.html">Lynx</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
<hr />
|
|||
|
<ul class="menu">
|
|||
|
<li>
|
|||
|
<a href="http://www.eleves.ens.fr/">Serveur des élèves</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="http://www.ens.fr/">ENS</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="http://www.spi.ens.fr/">SPI</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
<div class="corps">
|
|||
|
<h1>Configurer un serveur Apache avec .htaccess</h1>
|
|||
|
<div class="sommaire">
|
|||
|
<ul>
|
|||
|
<li>
|
|||
|
<a href="#s1">Qu'est-ce que c'est ?</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#err">Personnalisez vos pages d'erreur</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#redir">Redirections</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#s4">Jouer avec les index de répertoires</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#s5">Index alternatifs</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#s6">Restrictions d'accès</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#s7">Authentification</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#s8">Pour ouvrir aux gens ayant un compte clipper</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#s9">Par mot de passe (pour ouvrir aux gens hors de l'ENS)</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#s10">Pour en savoir plus</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
<h2>
|
|||
|
<a name="s1" id="s1">Qu'est-ce que c'est ?</a>
|
|||
|
</h2>
|
|||
|
<p><code>.htaccess</code> est un simple fichier texte qui vous permet
|
|||
|
de gérer de manière décentralisée un serveur Apache (le serveur des
|
|||
|
élèves, par exemple). Par exemple, <code>.htaccess</code> vous permet
|
|||
|
de protéger certains répertoires avec des mots de passe, de
|
|||
|
restreindre l'accès à votre page Web, d'empêcher le listage de vos
|
|||
|
répertoires (quand ils ne contiennent pas de fichier index.html), ou
|
|||
|
encore d'utiliser vos propres pages d'erreur (404, 403)...</p>
|
|||
|
<div class="attention">Les exemples donnés ici marchent pour le
|
|||
|
serveur Apache du serveur des élèves de l'ENS. Il ne marchera
|
|||
|
peut-être pas avec une autre configuration d'Apache. En cas de doute,
|
|||
|
demandez à votre administrateur système.</div>
|
|||
|
<p>Les directives d'un <code>.htaccess</code> s'appliquent à
|
|||
|
l'ensemble des fichiers du répertoire dans lequel il est placé, ainsi
|
|||
|
qu'aux sous-repertoires. <code>.htaccess</code> est lu à chaque
|
|||
|
requête du serveur, donc chaque modification prend effet
|
|||
|
immédiatement.</p>
|
|||
|
<div class="attention">Attention, la moindre erreur dans votre
|
|||
|
<code>.htaccess</code> causera une erreur serveur et empêchera tout
|
|||
|
accès à votre site. Vérifiez donc bien que tout marche bien à chaque
|
|||
|
modification de ce fichier. Une consultation des logs de webmaster
|
|||
|
(<code>/opt/webmaster/var/log/error_log.curr</code>) vous aidera à
|
|||
|
diagnostiquer ce qui ne marche pas.</div>
|
|||
|
<p>Précisons enfin que chaque ligne commençant par un dièse (#) est
|
|||
|
ignorée, ce qui vous permet de commenter vos directives.</p>
|
|||
|
<h2>
|
|||
|
<a name="err" id="err">Personnalisez vos pages d'erreur</a>
|
|||
|
</h2>
|
|||
|
<p>Tout le monde connaît bien les pages d'erreur 404 (File Not Found),
|
|||
|
403 (Forbidden), 500 (Internal Server Error)... Il peut être utile de
|
|||
|
personnaliser ce type de pages d'erreur (surtout les erreurs 404), par
|
|||
|
exemple pour demander à l'internaute de vous signaler les liens
|
|||
|
cassés, ou pour lui proposer de faire une recherche sur le site (il
|
|||
|
existe un <a href="http://www.eleves.ens.fr/search.html">moteur
|
|||
|
Google</a> pour le serveur des élèves).</p>
|
|||
|
<p>D'abord, créez vos propres pages d'erreur. Ensuite, dans votre
|
|||
|
fichier <code>.htaccess</code>, écrivez :</p>
|
|||
|
<pre>ErrorDocument numero_d'_erreur /chemin/du/fichier.html</pre>
|
|||
|
<p>Il est plus simple de nommer vos pages 403.html, 404.html, etc., ce
|
|||
|
qui donne :</p>
|
|||
|
<pre>ErrorDocument 404 /home/toto/404.html</pre>
|
|||
|
<p>Voici quelques unes des erreurs les plus courantes :</p>
|
|||
|
<ul>
|
|||
|
<li> 401 : Authorization required</li>
|
|||
|
<li> 403 : Forbidden</li>
|
|||
|
<li> 404 : Not Found</li>
|
|||
|
<li> 406 : Request Timed Out</li>
|
|||
|
<li> 500 : Internal Server Error</li>
|
|||
|
<li> 503 : Service Unavailable</li>
|
|||
|
</ul>
|
|||
|
<h2>
|
|||
|
<a name="redir" id="redir">Redirections</a>
|
|||
|
</h2>
|
|||
|
<p>Les redirections sont particulièrement utiles quand vous modifiez
|
|||
|
l'architecture de votre page Web. Par exemple, vous avez décidé de
|
|||
|
ranger tous vos exposés dans un répertoire
|
|||
|
<code>~/www/exposes/</code>. Vous souhaitez que quelqu'un qui veut
|
|||
|
accéder à l'ancien <code>~/www/expose1.html</code> soit rerouté vers
|
|||
|
la nouvelle adresse, <code>~/www/exposes/1.html</code>.</p>
|
|||
|
<p>Ceci est à spécifier dans votre <code>.htaccess</code> :</p>
|
|||
|
<pre>RedirectPermanent /home/toto/expose1.html http://www.eleves.ens.fr/home/toto/exposes/1.html</pre>
|
|||
|
<p>Et ainsi de suite pour tous les fichiers concernés.</p>
|
|||
|
<p>Vous pouvez aussi de cette manière rediriger les requètes vers un
|
|||
|
répertoire entier, et les rediriger vers un site à l'extérieur de
|
|||
|
l'ENS :</p>
|
|||
|
<pre>RedirectPermanent /home/toto/chevaux/ http://www.toto-chevaux.net/</pre>
|
|||
|
<p>De cette façon, les requètes vers vos anciennes pages dans le répertoire
|
|||
|
<code>~/www/chevaux/</code> seront toutes redirigées vers le site
|
|||
|
<code>http://www.toto-chevaux.net/</code>. Par exemple,
|
|||
|
<code>~/www/chevaux/soins.html</code> sera redirigée vers
|
|||
|
<code>http://www.toto-chevaux.net/soins.html</code>.</p>
|
|||
|
<h2>
|
|||
|
<a name="s4" id="s4">Jouer avec les index de répertoires</a>
|
|||
|
</h2>
|
|||
|
<p>Quand un répertoire ne contient pas de fichier index.html (ou
|
|||
|
index.htm), Apache liste le contenu du répertoire, en donnant quelques
|
|||
|
informations, typiquement la taille des fichiers. Mais il est possible
|
|||
|
de spécifier d'autres informations, comme la date de dernière
|
|||
|
modification, et d'ajouter une courte description de chaque
|
|||
|
fichier.</p>
|
|||
|
<p>La syntaxe est la suivante : <code>IndexOptions FancyIndexing
|
|||
|
<autres directives></code>. Ces autres directives sont les
|
|||
|
suivantes :</p>
|
|||
|
<dl>
|
|||
|
<dt>
|
|||
|
<code>IconsAreLinks</code>
|
|||
|
</dt>
|
|||
|
<dd>Les icônes qui renseignent le type de fichier deviennent aussi des
|
|||
|
liens</dd>
|
|||
|
<dt>
|
|||
|
<code>ScanHTMLTitles</code>
|
|||
|
</dt>
|
|||
|
<dd>On utilise pour la description des fichiers le titre des documents
|
|||
|
HTML.</dd>
|
|||
|
<dt>
|
|||
|
<code>SuppressSize</code>
|
|||
|
</dt>
|
|||
|
<dd>Supprime l'indication de taille des fichiers</dd>
|
|||
|
<dt>
|
|||
|
<code>SuppressDescription</code>
|
|||
|
</dt>
|
|||
|
<dd>Supprime la description</dd>
|
|||
|
<dt>
|
|||
|
<code>SuppressLastModified</code>
|
|||
|
</dt>
|
|||
|
<dd>Supprime la date de dernière modification</dd>
|
|||
|
</dl>
|
|||
|
<p>Exemple : vous avez un répertoire d'images appelé
|
|||
|
<code>~/www/images/</code>, vous souhaitez avoir la taille et la
|
|||
|
description de chacune des images. Vous en profitez pour supprimer la
|
|||
|
date de dernière modification, qui ici vous importe peu et prend de la
|
|||
|
place.</p>
|
|||
|
<pre>IndexOptions SuppressLastModified FancyIndexing
|
|||
|
AddDescription "Le bassin aux Ernests" images/ernests.gif
|
|||
|
AddDescription "La planète Mars" images/mars.jpg
|
|||
|
</pre>
|
|||
|
<h2>
|
|||
|
<a name="s5" id="s5">Index alternatifs</a>
|
|||
|
</h2>
|
|||
|
<p>Pour une raison quelconque, vous n'utilisez pas de fichiers
|
|||
|
index.html ou index.htm. Par exemple, vous utilisez PHP et pour vous,
|
|||
|
les fichiers d'index s'appellent <code>index.php</code>. Ou encore,
|
|||
|
vos fichiers d'index s'appellent <code>tagada.html</code>. Vous pouvez
|
|||
|
indiquer au serveur quels fichiers considérer comme des fichiers
|
|||
|
d'index :</p>
|
|||
|
<pre>DirectoryIndex index.php</pre>
|
|||
|
<p>Si vous utilisez des fichiers d'index aux noms différents, vous
|
|||
|
pouvez créer une liste. Apache regarde d'abord si le fichier cité en
|
|||
|
premier existe, et à défaut passe au suivant jusqu'à ce qu'il en
|
|||
|
trouve un, sinon il affiche le contenu du répertoire (sauf si vous
|
|||
|
avez désactivé cette fonction, bien sûr).</p>
|
|||
|
<pre>DirectoryIndex index.php tagada.html main.html index.html</pre>
|
|||
|
<h2>
|
|||
|
<a name="s6" id="s6">Restrictions d'accès</a>
|
|||
|
</h2>
|
|||
|
<p>Vous pouvez interdire l'accès à votre site à partir de certaines
|
|||
|
adresses IP. Dans ce document, il ne sera question que des adresses
|
|||
|
IPv4, dont on rappelle qu'elles sont constituées de quatre nombres de 0
|
|||
|
à 255 séparés par des points (par exemple l'adresse IP de sas.eleves est
|
|||
|
<code>129.199.121.11</code>).</p>
|
|||
|
<p>Pour interdire une adresse IP :</p>
|
|||
|
<pre>deny from 123.456.789.10</pre>
|
|||
|
<p>Inversement, on peut autoriser une adresse IP :</p>
|
|||
|
<pre>allow from 123.456.789.10</pre>
|
|||
|
<p>Si on indique un ou deux nombres seulement, ils sont interprétés
|
|||
|
comme des plages d'adresses IP. Par exemple, <code>allow from
|
|||
|
129.199</code> autorise tous les accès venant de l'École. <code>deny
|
|||
|
from all</code> interdit à tout le monde l'accès à vos fichiers, mais
|
|||
|
des scripts peuvent continuer à les utiliser.</p>
|
|||
|
<p>En pratique, une interdiction de certaines IP prend la forme
|
|||
|
suivante :</p>
|
|||
|
<pre>
|
|||
|
order allow,deny
|
|||
|
deny from 123.45.6.7 # on interdit l'adresse précise 123.45.6.7
|
|||
|
deny from 12.34.5 # on interdit toutes les adresses IP commençant par 12.34.5
|
|||
|
allow from all # on autorise tous les autres
|
|||
|
</pre>
|
|||
|
<p>Le rôle de la directive <code>order</code> ci-dessus est d'indiquer
|
|||
|
l'ordre dans lequel les directives <code>deny</code> et
|
|||
|
<code>allow</code> doivent être évaluées. Il faut préciser soit
|
|||
|
<code>allow,deny</code> (auquel cas les requêtes sont refusées sauf si
|
|||
|
elles sont désignées par une directive <code>allow</code> et aucune
|
|||
|
directive <code>deny</code>), soit <code>deny,allow</code> (auquel cas
|
|||
|
les requêtes sont acceptées sauf si elles sont désignées par une
|
|||
|
directive <code>deny</code> et aucune directive <code>allow</code>).
|
|||
|
Remarquez que, d'une façon quelque peu contre-intuitive, l'ordre réel
|
|||
|
des directives <code>allow</code> et <code>deny</code> dans le fichier
|
|||
|
<code>.htaccess</code> est sans importance.</p>
|
|||
|
<p>Exemple : vous souhaitez réserver une partie de votre site aux
|
|||
|
connexions venant de l'École. Admettons qu'il s'agisse de votre
|
|||
|
répertoire <code>~/www/normalos/</code>. Créez dans ce répertoire une
|
|||
|
fichier <code>.htaccess</code> dans lequel vous écrirez :</p>
|
|||
|
<pre>
|
|||
|
order deny,allow
|
|||
|
deny from all
|
|||
|
allow from 129.199
|
|||
|
</pre>
|
|||
|
<p>On peut aussi utiliser des noms de domaine. Admettons que vous
|
|||
|
n'aimiez ni le gouvernenent américain ni l'entreprise de
|
|||
|
M. Gates. Vous pouvez écrire :</p>
|
|||
|
<pre>Deny from .gov microsoft.com</pre>
|
|||
|
<h2>
|
|||
|
<a name="s7" id="s7">Authentification</a>
|
|||
|
</h2>
|
|||
|
<p>Gardez à l'esprit que si vous protégez par mot de passe
|
|||
|
un répertoire, il sera toujours lisible par tous les gens qui
|
|||
|
possèdent un compte clipper en naviguant dans la hiérarchie de
|
|||
|
fichiers depuis un des ordinateurs de l'ENS.</p>
|
|||
|
<h2>
|
|||
|
<a name="s8" id="s8">Pour ouvrir aux gens ayant un compte clipper</a>
|
|||
|
</h2>
|
|||
|
<p>
|
|||
|
Il suffit de rajouter un fichier ".htaccess" dans le dossier à
|
|||
|
protéger qui contient les lignes suivantes :
|
|||
|
</p>
|
|||
|
<pre>
|
|||
|
Order deny,allow
|
|||
|
Deny from all
|
|||
|
Authtype CAS
|
|||
|
AuthName "CAS"
|
|||
|
Require valid-user
|
|||
|
Satisfy Any
|
|||
|
</pre>
|
|||
|
<h2>
|
|||
|
<a name="s9" id="s9">Par mot de passe (pour ouvrir aux gens hors de l'ENS)</a>
|
|||
|
</h2>
|
|||
|
<p>Procédons par étapes.</p>
|
|||
|
<p>1) On commence par créer un fichier <code>.passwds</code> qui
|
|||
|
contiendra les renseignements sur les personnes autorisées. Pour ce
|
|||
|
faire, on tape :</p>
|
|||
|
<pre>htpasswd -c .passwds toto</pre>
|
|||
|
<p>Ce qui crée à la fois <code>.htpasswd</code> et l'utilisateur toto,
|
|||
|
pour lequel on vous demande un mot de passe.</p>
|
|||
|
<pre><span class="prompt">sas ~ $</span> htpasswd -c .passwds
|
|||
|
toto
|
|||
|
New password:
|
|||
|
Re-type new password:
|
|||
|
Adding password for user toto
|
|||
|
</pre>
|
|||
|
<p>Pour ajouter d'autres utilisateurs : <code>htpasswd .htpasswd
|
|||
|
titi</code>. Pour en retirer, il suffit d'éditer le fichier et
|
|||
|
d'effacer la ligne correspondant à l'utilisateur
|
|||
|
concerné. <code>htpasswd</code> chiffre les mots de passe (en
|
|||
|
utilisant une variante de md5), qui ne figurent donc pas en clair dans
|
|||
|
les fichiers.</p>
|
|||
|
<p>Pour en savoir plus, consultez la <a href="http://httpd.apache.org/docs/programs/htpasswd.html">page de
|
|||
|
man</a> de htpasswd.</p>
|
|||
|
<p>2) On en revient à <code>.htaccess</code> et on tape :</p>
|
|||
|
<pre>
|
|||
|
AuthType Basic
|
|||
|
AuthUserFile /users/03/pataphys/vian/www/repertoire/.passwds
|
|||
|
# endroit où vous conservez les mots de passe
|
|||
|
AuthName "Entrez votre mot de passe" # ici vous indiquez ce qui figurera dans la barre de titre
|
|||
|
# de la fenêtre
|
|||
|
require valid-user
|
|||
|
</pre>
|
|||
|
<p>Si vous voulez protéger par mot de passe seulement certaines
|
|||
|
parties du site, il faut créer un <code>.htaccess</code> dans le
|
|||
|
répertoire concerné.</p>
|
|||
|
<p>Vous ne voulez peut-être pas que l'on sache où vous rangez vos mots
|
|||
|
de passe. Il faut dans ce cas empêcher l'accès au fichier
|
|||
|
<code>.htaccess</code> lui-même. Pour protéger le fichier,
|
|||
|
taper :</p>
|
|||
|
<pre>
|
|||
|
<Files .htaccess>
|
|||
|
order allow,deny
|
|||
|
deny from all
|
|||
|
</Files>
|
|||
|
</pre>
|
|||
|
<h2>
|
|||
|
<a name="s10" id="s10">Pour en savoir plus</a>
|
|||
|
</h2>
|
|||
|
<p>
|
|||
|
Pour plus d'informations sur les fichiers <code>.htaccess</code>, vous
|
|||
|
pouvez vous reporter à l'<a href="http://en.wikipedia.org/wiki/.htaccess">article Wikipedia à
|
|||
|
leur propos</a> (qui n'est pas spécifique à Apache), ou au <a href="https://httpd.apache.org/docs/current/howto/htaccess.html">tutorial
|
|||
|
à leur sujet qui figure dans la documentation d'Apache</a>.
|
|||
|
</p>
|
|||
|
<div class="metainformation">
|
|||
|
Auteur : Marie-Lan Nguyen. Modifié par : Laurent Rineau.
|
|||
|
Dernière modification : 2013-10-20 par Antoine Amarilli.
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</body>
|
|||
|
</html>
|