Le logiciel de serveur web que nous utilisons (Apache) permet aux utilisateurs de modifier bon nombre de paramètres affectant l'opération du serveur web, par le biais de fichiers .htaccess. Il sagit de simples fichiers textes, contenant des directives spécifiques. Vous pouvez placer un fichier .htaccess dans n'importe quel répertoire sous ~/www/. Ce petit guide répertorie quelques directives fréquemment utilisées.

Note: Les utilisateurs de nos plans Avancé et Corporatif préférerons peut-être placer ces directives directement dans leur httpd.conf. Dans tous les cas, la syntaxe est la même.

Champ d'action

Il est important de se rapeller que les directives présentes dans un fichier .htaccess s'appliquent non seulement au répertoire contenant .htaccess, mais également à ses sous-répertoires.

Commentaires

Les commentaires dans les fichiers .htaccess sont marqués par un « # » au début d'une ligne.

Protection avec mot de passe pour répertoires

L'authentification par mot de passe est utile lorsque vous désirez restreindre l'accès à un répertoire avec des noms d'utilisateur / mots de passe. Le fureteur du client affiche alors un prompt lorsque le visiteur tente d'accéder à un répertoire protégé. Lorsque la sécurité est importante, l'authentification par mot de passe devrait toujours être utilisée en combinaison avec SSL.

  
  AuthName "domaine-autorisé"
  AuthType Basic
  AuthUserFile /home/myself/private/stuff.pw
  Require valid-user

Le AuthName peut être n'importe quel texte. Ce texte sera affiché lors de la saisie du mot de passe.

La directive AuthUserFile désigne le chemin d'accès vers le fichier texte contenant les noms d'utilisateurs et mots de passe. Le fichier peut être placé nimporte où sous votre répertoire maison. Dans cet exemple, nous utilisons ~/private/stuff.pw.

Vous pouvez créer et mettre à jour un AuthUserFile avec l'utilitaire htpasswd(1). Utilisez le flag d'option -c pour créer un nouveau fichier. Le dernier argument est le nom d'utilisateur que nous voulons créer (ou dont nous voulons changer le mot de passe).

  $ htpasswd -c ~/private/stuff.pw newlogin1
  $ htpasswd ~/private/stuff.pw newlogin2
Bloquage de requêtes provenant d'adresses spécifiques

La directive Deny from fait en sorte que l'accès à partir d'une adresse IP, un bloc IP ou un domaine soit bloqué:

  Deny from 10.0.0.1
  Deny from 1.2.3.

Ou alors -

  <Limit GET>
  Order deny,allow
  10.0.0.1
  1.2.3.
  Allow from all
  </Limit>

Notez que le blocage d'adresses IP est rarement un moyen efficace de régler des problèmes d'abus! C'est en général une mauvaise idée de bloquer des clients en utilisant l'adresse IP comme seul critère.

Documents d'erreur personnalisés

Vous pouvez déclarer et utiliser vos propres documents en réponse à des erreurs, tels des requêtes pour des fichiers non-existants, avec la directive ErrorDocument. Veuillez vous assurer que la taille des documents d'erreurs soit minimale, et qu'ils n'incluent aucune image, car des vers informatiques, par exemple, peuvent rapidement générer beaucoup de requêtes. N'utilisez jamais un URL comme destination pour le ErrorDocument!

  ErrorDocument 404 errors/notfound.html
  ErrorDocument 403 errors/forbidden.html
  ErrorDocument 500 errors/servererror.html
L'affichage des répertoires

Si aucun fichier d'index n'existe dans un répertoire donné (et ce répertoire est lisible par le serveur web), un index sera automatiquement généré. Pour désactiver cette fonction, utilisez:

  Options -Indexes

Il est aussi possible de cacher certains fichiers de l'index. Pour bloquer sélectivement l'affichage de fichiers nommés README et toutes les images d'extension .gif, utilisez IndexIgnore:

  IndexIgnore README *.gif
Les associations d'extension de fichier

Pour changer les associations d'extensions de fichier par défaut, la directive AddHandler peut être utilisée.

Pour traiter tous fichier .html en tant que scripts PHP (en assumant que ce sont réellement des scripts PHP!), vous utiliseriez:

  AddType application/x-httpd-php .html

C'est possible, avec la directive AddType, d'associer des extensions de fichier à des types MIME spécifiques. Pour forcer l'association des fichiers .foo avec le type application/x-foo-type, utilisez:

  AddType application/x-foo-type .foo

Nous ajoutons constamment des nouveaux types MIME par défaut. S'il est de votre avis qu'un type MIME en particulier mérite une reconnaissance globale, n'hésitez pas à nous en faire part!

Négotiation de contenu

Les navigateurs web conformes à la norme HTTP/1.1 supportent les requêtes de pages web et autres resources en différents langages et codages de caractères. L'option MultiViews du module mod_negotiation d'Apache contrôle la sélection implicite de documents alternatifs selon leur extension.

  Options +MultiViews

Par exemple, si un navigateur web fait une requête pour index.html, et aucun fichier se nomme ainsi, le serveur web essaiera index.html.fr, index.html.en et ainsi de suite, tout dépendant des préférences de langage de l'utilisateur.

Quelques liens utiles