Serveur Apache HTTP Version 2.4

Les fichiers .htaccess fournissent une m�thode pour
modifier la configuration du serveur au niveau de chaque r�pertoire.
 Fichiers .htaccess
 Que sont ce fichiers, comment les utiliser ?
 Quand doit-on (ne doit-on pas) utiliser
    les fichiers .htaccess ?
 Comment sont appliqu�es les directives ?
 Exemple d'authentification
 Exemple d'Inclusion C�t� Serveur (Server Side
Includes - SSI)
 Exemple de CGI
 R�solution des probl�mes| Modules Apparent�s | Directives Apparent�es | 
|---|---|
.htaccess ne doivent �tre utilis�s
    que si vous n'avez pas acc�s au fichier de configuration du serveur
    principal. L'utilisation des fichiers .htaccess
    ralentit le fonctionnement de votre serveur HTTP Apache. Il est toujours
    pr�f�rable de d�finir les directives que vous pouvez inclure dans un
    fichier .htaccess dans une section Directory, car elles produiront le
    m�me effet avec de meilleures performances.Les fichiers .htaccess (ou "fichiers de
    configuration distribu�s") fournissent une m�thode pour modifier la
    configuration du serveur au niveau d'un r�pertoire. Un fichier,
    contenant une ou plusieurs directives de configuration, est plac�
    dans un r�pertoire de documents particulier, et ses directives
    s'appliquent � ce r�pertoire et � tous ses sous-r�pertoires.
Si vous voulez donner un autre nom � votre fichier
      .htaccess, vous pouvez le faire en utilisant la
      directive AccessFileName. Par
      exemple, si vous pr�f�rez nommer votre fichier
      .config, vous pouvez mettre ceci dans le fichier de
      configuration de votre serveur :
AccessFileName .config
En g�n�ral, les fichiers .htaccess utilisent la m�me
    syntaxe que les fichiers de
    configuration principaux. Ce que vous pouvez mettre dans ces
    fichier est d�termin� par la directive AllowOverride. Cette directive sp�cifie,
    sous forme de cat�gories, quelles directives seront trait�es si
    elles se trouvent dans un fichier .htaccess. Si une
    directive est permise dans un fichier .htaccess file,
    la documentation de cette directive contiendra une section Override,
    sp�cifiant quelle valeur doit prendre AllowOverride pour que cette directive
    soit trait�e.
Par exemple, si vous regardez la documentation de la directive
    AddDefaultCharset, vous verrez
    que cette derni�re est permise dans les fichiers
    .htaccess (Voir la ligne de contexte dans le r�sum� de
    la directive). La ligne Override indique
    FileInfo. Vous devez donc avoir au moins
    AllowOverride FileInfo pour que cette directive soit
    trait�e dans les fichiers .htaccess.
| Contexte : | configuration du serveur, serveur virtuel, directory, .htaccess | 
| Override: | FileInfo | 
Si vous n'�tes pas s�r qu'une directive particuli�re soit permise
    dans un fichier .htaccess, lisez la documentation de
    cette directive, et consultez la ligne de contexte pour
    ".htaccess".
En principe, vous ne devriez utiliser les fichiers
    .htaccess que lorsque vous n'avez pas acc�s au fichier de
    configuration du serveur principal. Par exemple, la fausse
    id�e
    selon laquelle l'authentification de l'utilisateur devrait toujours
    �tre faite dans les fichiers .htaccess est tr�s
    r�pandue. Il est aussi souvent avanc�, ces derni�res
    ann�es, que les directives de mod_rewrite doivent
    �tre d�finies dans les fichiers .htaccess. Ceci est
    tout simplement faux. Vous pouvez configurer
    l'authentification des utilisateurs au niveau de la configuration du
    serveur principal, et c'est en fait cette m�thode qui doit �tre
    privil�gi�e. De m�me, les directives de
    mod_rewrite fonctionneront mieux, � de nombreux �gards,
    dans le contexte du serveur principal.
Les fichiers .htaccess ne devraient �tre utilis�s
    que dans le cas o� les fournisseurs de contenu ont besoin de
    modifier la configuration du serveur au niveau d'un r�pertoire, mais
    ne poss�dent pas l'acc�s root sur le syst�me du serveur. Si
    l'administrateur du serveur ne souhaite pas effectuer des
    modifications de configuration incessantes, il peut �tre int�ressant
    de permettre aux utilisateurs isol�s d'effectuer eux-m�mes ces
    modifications par le biais de fichiers .htaccess. Ceci
    est particuli�rement vrai dans le cas o� le fournisseur d'acc�s �
    Internet h�berge de nombreux sites d'utilisateurs sur un seul
    serveur, et souhaite que ces utilisateurs puissent modifier
    eux-m�mes leurs configurations.
Cependant et d'une mani�re g�n�rale, il vaut mieux �viter
    d'utiliser les fichiers .htaccess. Tout �l�ment de
    configuration que vous pourriez vouloir mettre dans un fichier
    .htaccess, peut aussi �tre mis, et avec la m�me
    efficacit�, dans une section <Directory> du fichier de configuration de
    votre serveur principal.
Il y a deux raisons principales d'�viter l'utilisation des
    fichiers .htaccess.
La premi�re est li�e aux performances. Lorsque la directive
    AllowOverride est d�finie de
    fa�on � autoriser l'utilisation des fichiers .htaccess,
    httpd va rechercher leur pr�sence dans chaque r�pertoire. Ainsi,
    permettre l'utilisation des fichiers .htaccess est d�j�
    en soi une cause de d�gradation des performances, que vous utilisiez
    effectivement ces fichiers ou non ! De plus, le fichier
    .htaccess est charg� en m�moire chaque fois qu'un
    document fait l'objet d'une requ�te.
Notez aussi que httpd doit rechercher les fichiers
    .htaccess dans tous les r�pertoires de niveau
    sup�rieur, afin de rassembler toutes les directives qui s'appliquent
    au r�pertoire courant (Voir la section comment sont
    appliqu�es les directives). Ainsi, si un fichier fait l'objet
    d'une requ�te � partir d'un r�pertoire
    /www/htdocs/exemple, httpd doit rechercher les
    fichiers suivants :
      /.htaccess
      /www/.htaccess
      /www/htdocs/.htaccess
      /www/htdocs/exemple/.htaccess
    
En cons�quence, chaque acc�s � un fichier de ce r�pertoire
    n�cessite 4 acc�s au syst�me de fichiers suppl�mentaires pour
    rechercher des fichiers .htaccess, m�me si
    aucun de ces fichiers n'est pr�sent. Notez que cet exemple ne peut
    se produire que si les fichiers .htaccess ont �t�
    autoris�s pour le r�pertoire /, ce qui est rarement le
    cas.
La seconde raison d'�viter l'utilisation des fichiers
    .htaccess est li�e � la s�curit�. Si vous permettez aux
    utilisateurs de modifier la configuration du serveur, il peut en
    r�sulter des cons�quences sur lesquelles vous n'aurez aucun
    contr�le. R�fl�chissez bien avant de donner ce privil�ge � vos
    utilisateurs. Notez aussi que ne pas donner aux utilisateurs les
    privil�ges dont ils ont besoin va entra�ner une augmentation des
    demandes de support technique. Assurez-vous d'avoir inform�
    clairement vos utilisateurs du niveau de privil�ges que vous leur
    avez attribu�. Indiquer exactement comment vous avez d�fini la
    directive AllowOverride et
    diriger les utilisateurs vers la documentation correspondante vous
    �vitera bien des confusions ult�rieures.
Notez que mettre un fichier .htaccess contenant une
    directive dans un r�pertoire /www/htdocs/exemple
    revient exactement au m�me que mettre la m�me directive dans une
    section Directory <Directory /www/htdocs/exemple>
    du fichier de configuration de votre serveur principal :
Fichier .htaccess dans
    /www/htdocs/exemple :
/www/htdocs/exempleAddType text/example .exm
apache2.conf<Directory /www/htdocs/example>
    AddType text/example .exm
</Directory>
Cependant, la perte de performances sera moindre si vous
    d�finissez cette directive dans la configuration de
    votre serveur principal, car cette derni�re ne sera charg�e qu'une
    seule fois au moment du d�marrage du serveur, alors qu'elle le sera
    � chaque acc�s dans le cas d'un fichier .htaccess.
L'utilisation des fichiers .htaccess peut �tre
    enti�rement d�sactiv�e en d�finissant la directive AllowOverride � none :
AllowOverride None
Les directives de configuration situ�es dans un fichier
    .htaccess s'appliquent au r�pertoire dans lequel ce
    fichier .htaccess se trouve, ainsi qu'� tous ses
    sous-r�pertoires. Cependant, il est important de garder � l'esprit
    qu'il peut y avoir des fichiers .htaccess dans les
    r�pertoires de niveau sup�rieur. Les directives sont appliqu�es
    selon l'ordre dans lequel elles sont rencontr�es. Ainsi, les
    directives d'un fichier .htaccess situ� dans un
    r�pertoire particulier peuvent �craser les directives se trouvant
    dans des fichiers .htaccess situ�s � un niveau
    sup�rieur dans l'arborescence des r�pertoires. Et ces derni�res
    peuvent elles-m�mes avoir �cras� des directives d'un fichier
    .htaccess situ� � un niveau encore plus haut, ou dans
    le fichier de configuration du serveur principal.
Exemple :
Dans le r�pertoire /www/htdocs/exemple1 se trouve un
    fichier .htaccess contenant ce qui suit :
Options +ExecCGI
Note : "AllowOverride Options" doit �tre pr�sent
    pour permettre l'utilisation de la directive "Options"  dans les fichiers
    .htaccess.
Dans le r�pertoire /www/htdocs/exemple1/exemple2 se
    trouve un fichier .htaccess contenant ce qui suit
    :
Options Includes
Ainsi, � cause de ce second fichier .htaccess du
    r�pertoire /www/htdocs/exemple1/exemple2, l'ex�cution
    des CGI est interdite, car la derni�re d�finition d'options
    Options Includes �crase toute autre d�finition
    d'options d'un fichier .htaccess situ� dans un
    r�pertoire de niveau sup�rieur.
Comme indiqu� dans la documentation sur les Sections de configuration, les fichiers
    .htaccess peuvent �craser les directives des sections
    <Directory> pour
    le r�pertoire correspondant, mais peuvent eux-m�mes �tre �cras�s
    par d'autres types de sections des fichiers de la
    configuration principale. Cette possibilit� peut s'av�rer utile pour
    forcer certaines configurations, m�me en cas de pr�sence de l'option
    lib�rale AllowOverride. Par
    exemple, pour interdire l'ex�cution de scripts en autorisant la
    d�finition de toute autre option dans les fichiers
    .htaccess, vous pouvez utiliser :
<Directory /www/htdocs>
    AllowOverride All
</Directory>
<Location />
    Options +IncludesNoExec -ExecCGI
</Location>
    DocumentRoot est
    /www/htdocs.Si vous acc�dez directement � ce point du document pour apprendre
    � effectuer une authentification, il est important de noter ceci. Il
    existe une fausse id�e selon laquelle il serait n�cessaire
    d'utiliser les fichiers .htaccess pour impl�menter
    l'authentification par mot de passe. Ceci est tout simplement faux.
    Pour y parvenir, il est pr�f�rable de mettre les directives
    d'authentification dans une section <Directory> du fichier de configuration de
    votre serveur principal, et les fichiers .htaccess ne
    devraient �tre utilis�s que dans le cas o� vous n'avez pas acc�s au
    fichier de configuration du serveur principal. Voir ci-dessus pour savoir dans quels cas vous devez ou
    ne devez pas utiliser les fichiers .htaccess.
Ceci �tant dit, si vous pensez que vous devez quand-m�me utiliser
    un fichier .htaccess, vous pouvez utiliser la
    configuration suivante :
Contenu du fichier .htaccess :
AuthType Basic AuthName "Password Required" AuthUserFile /www/passwords/password.file AuthGroupFile /www/passwords/group.file Require Group admins
Notez que AllowOverride AuthConfig doit �tre pr�sent
    pour que ces directives produisent leur effet.
Vous pouvez vous r�f�rer au tutoriel sur l'authentification pour une description plus d�taill�e de l'authentification et de l'autorisation.
Les fichiers .htaccess sont aussi couramment
    utilis�s pour activer les SSI pour un r�pertoire particulier. Pour y
    parvenir, on utilise les directives de configuration suivantes,
    plac�es dans un fichier .htaccess enregistr� dans le
    r�pertoire consid�r� :
Options +Includes AddType text/html shtml AddHandler server-parsed shtml
Notez que AllowOverride Options et AllowOverride
    FileInfo doivent �tre tous les deux pr�sents pour que ces
    directives puissent produire leur effet.
Vous pouvez vous r�f�rer au tutoriel SSI pour une description plus d�taill�e des SSI.
En fin de compte, vous avez d�cid� d'utiliser un fichier
    .htaccess pour permettre l'ex�cution des programmes CGI
    dans un r�pertoire particulier. Pour y parvenir, vous pouvez
    utiliser la configuration suivante :
Options +ExecCGI AddHandler cgi-script cgi pl
Alternativement, si vous souhaitez que tous les fichiers d'un r�pertoire donn� soient consid�r�s comme des programmes CGI, vous pouvez utiliser la configuration suivante :
Options +ExecCGI SetHandler cgi-script
Notez que AllowOverride Options et AllowOverride
    FileInfo doivent �tre tous les deux pr�sents pour que ces
    directives puissent produire leur effet.
Vous pouvez vous r�f�rer au tutoriel CGI pour une description plus d�taill�e de la configuration et de la proprammation CGI.
De nombreuses raisons peuvent �tre � l'origine du fait que
    les directives que vous avez mises dans un fichier
    .htaccess ne produisent pas l'effet d�sir�.
Le plus souvent, le probl�me vient du fait que la d�finition de
    la directive AllowOverride
    ne permet pas l'activation des directives de votre fichier
    .htaccess. V�rifiez si une directive
    AllowOverride None n'affecte pas le r�pertoire o� se
    trouve votre fichier. Un bon test consiste � mettre des directives
    dont la syntaxe est erron�e dans votre ficher .htaccess
    et de recharger la page. Si aucune erreur n'est g�n�r�e par le
    serveur, il est pratiquement certain qu'une directive
    AllowOverride None affecte votre r�pertoire.
Par contre, si vous obtenez des erreurs de serveur lorsque vous
    tentez d'acc�der � des documents, consultez votre journal des
    erreurs de httpd. Il vous indiquera probablement que la directive
    utilis�e dans votre fichier .htaccess n'est pas
    permise.
	[Fri Sep 17 18:43:16 2010] [alert] [client 192.168.200.51] /var/www/html/.htaccess: DirectoryIndex not allowed here
Cela signifie soit que vous utilisez une directive qui n'est
	jamais permise dans les fichiers .htaccess, soit
	que vous n'avez tout simplement pas d�fini la directive
	AllowOverride � un niveau
	suffisant pour la directive que vous utilisez. Consultez la
	documentation de cette directive pour d�terminer quel cas
	s'applique.
Le journal des erreurs peut aussi vous signaler une erreur de syntaxe dans l'usage de la directive elle-m�me.
    [Sat Aug 09 16:22:34 2008] [alert] [client 192.168.200.51] /var/www/html/.htaccess: RewriteCond: bad flag delimiters
    
Dans ce cas, le message d'erreur sera sp�cifique � l'erreur de syntaxe que vous avez commise.