Personnaliser Apache avec .htaccess | Farid KASMI
Il est possible de modifier l’apparence d’Apache en bidouillant un peu le fichier httpd.conf ou les fichiers .htaccess. Le mieux serait de modifier httpd.conf mais pour beaucoup ce n’est pas possible, en effet à moins d’avoir un serveur maison ou un serveur dédié qui coute une fortune, on est souvent limité à modifier le fichier .htaccess.
Il est possible d’utiliser les directives présentées ci-dessous dans les fichiers .htaccess si AllowOverride est paramétrée pour le permettre. Lorsque le serveur trouve un fichier .htaccess (spécifié par AccessFileName), il doit savoir quelles directives déclarées dans le fichier peuvent outrepasser les directives définies précédemment.
Cet article présente:
* Personnalisation des messages d’erreurs
* Modifier les index de répertoires
* Gérer les types de fichiers
* Redirections
Personnalisation des messages d’erreurs
Il est possible de personnaliser les messages d’erreurs d’Apache à l’aide de la directive ErrorDocument. Selon le numéro de l’erreur, il est possible d’afficher un message ou de faire une redirection vers une page personnalisée. Exemple:
ErrorDocument 500 « Erreur interne du serveur »
ErrorDocument 403 /error/403.html
ErrorDocument 404 /dc/index.php
ErrorDocument 401 /error/401.html
Attention : le chemin des fichiers est relatif à la racine du site, dans l’exemple les fichiers html se trouvant à la racine.
* Personnalisation des Messages d’Erreurs (doc Apache)
* Les codes de statut HTTP
Modifier les index de répertoires
Lorsqu’aucune page par défaut attendue par DirectoryIndex n’est présente dans le répertoire, Apache génère une liste des fichiers présent dans ce répertoire. L’affichage par défaut d’Apache est relativement laid et nous allons voir dans cette partie comment personnaliser cette page. Voici un exemple:
Index par défaut
Index alternatifs
La directive DirectoryIndex spécifie à Apache quel(s) fichier(s) utiliser lorsqu’un utilisateur demande d’afficher un dossier (ex : http://www.nemako.net/articles/apache/). Nous trouverons souvent quelquechose comme:
DirectoryIndex index.html index.htm index.php
Cependant il est possible de modifier cette directive, par exemple:
DirectoryIndex index.html index.htm index.php main.html /cgi-bin/index.pl
Si aucune page spécifiée n’est présente dans le répertoire, un listing des fichiers du répertoire apparaît.
Personnaliser la liste
Il est possible de personnaliser cette liste à l’aide de la directive IndexOptions. En utilisant l’option FancyIndexing, nous activons la personnalisation du listing. D’autres options peuvent s’ajouter à IndexOptions FancyIndexing <directives>:
* IconsAreLinks: les icônes qui renseignent le type de fichier deviennent aussi des liens
* ScanHTMLTitles : on utilise pour la description des fichiers le titre des documents HTML.
* SuppressSize : supprime l’indication de taille des fichiers
* SuppressDescription : supprime la description
* SuppressLastModified : supprime la date de dernière modification
* SuppressHTMLPreamble : supprime le préambule HTML (<html>…<body>) inclus automatiquement dans les pages. Utile pour apporter une touche perso par la suite à ce bout de code.
* FoldersFirst : Classe les dossiers en premier dans la liste.
* NameWidth=*|n : Fixe la largeur de la colonne de nom de fichier. Si un nombre est spécifié (n) les noms seront tronqués (comme par défaut) à cette valeur. Avec une astérisque, l’ajustement est automatique au nom le plus long.
* SuppressColumnSorting : Désactive le lien sur les titres de colonnes, permettant à l’origine de classer par date, nom de fichier, etc…
Personnaliser l’affichage html
Deux directives permettent de définir le fichier à insérer avant et celui à insérer après le listing du répertoire: HeaderName et ReadmeName.
Par défaut ces deux fichiers sont définis par
* HeaderName HEADER.html # entête de la page
* ReadmeName README.html # bas de page
Pour avoir un affichage personnalisée, il faut donc avoir un fichier HEADER.html et un README.html dans chaque dossier. Si l’on souhaite avoir un affichage personnalisé de tous les dossiers du site, il suffit de définir dans le fichier .htaccess (situé à la racine du site) l’emplacement de nos deux fichiers. Noté bien le / pour définir un chemin relatif à la racine du site et non plus relatif au répertoire visité.
* HeaderName /HEADER.html
* ReadmeName /README.html
Voici un exemple basique:
* HEADER.html
<?xml version= »1.0″ encoding= »ISO-8859-1″?>
<!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 » xml:lang= »fr »>
<head>
<meta http-equiv= »Content-Type » content= »text/html; charset=ISO-8859-1″ />
<title>Page personnalisée</title>
<style type= »text/css »>
…
</style>
</head>
<body>
* README.html
</body>
</html>
Modifier la description des entrées
Il est possible d’ajouter une desciption aux fichiers du répertoire à l’aide de la directive AddDescription. La description peut être valable pour une extension de fichier, un fichier spécifique ou un nom de fichier partiel. Dans l’exemple suivant, tous les fichiers *.mp3 auront la desciption « Fichier audio MP3″ et le fichier articles/apache/fichier.gif aura le description « Vue panoramique de Dubrovnik »
AddDescription « Fichier audio MP3 » .mp3
AddDescription « Vue panoramique de Dubrovnik » articles/apache/dubro.jpg
Modifier les icônes
La directive AddIcon permet de modifier les icônes présent par défaut. On assigne alors une image à afficher à la place de l’icône par défaut, pour les extensions de fichier souhaitées. Exemple:
AddIcon /icone/Word.png .doc
AddIcon /icone/Excel.png .xls
AddIcon /icone/Texte.png .txt .rtf
AddIcon /icone/zip.png .zip .rar
Pour modifier l’icône d’un répertoire:
AddIcon /icone/Folder.png ^^DIRECTORY^^ # ou AddIcon /icone/Folder.png .
Pour modifier l’iône du Parent Directory:
AddIcon /icone/Back.png ..
L’icône des fichiers sans extension (ou icône par défaut) est défini à l’aide de la directive DefaultIcon:
DefaultIcon /icone/Console.png
Enfin il est ausis possible de définir une icône par type de fichier à l’aide de la directive AddIconByType
AddIconByType (SND,/icone/iTunes.png) audio/*
Conclusion
Une fois toute cette modification effectué voici mon répertoire http://www.nemako.net/articles/apache/
Index personnalisé
Gérer les types de fichiers
La majorité de cette partie provient du site CCM.
Un MIME type est un ensemble de types de fichiers standard, permettant d’associer une extension de fichier donnée à une application, afin d’automatiser le lancement de l’application.
Ajouter un Mime-Type à un répertoire
La syntaxe est la suivante :
AddType (mime/type liste_d_extension)
Voici un exemple de mise en oeuvre du fichier .htaccess :
AddType image/x-photoshop PSD
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .htm
Le serveur enverra au navigateur Internet le fichier en lui disant de lancer le programme PhotoShop (s’il est installé sur votre machine) et de lui donner le fichier. Habituellement, ceci est utilisé pour des fichiers nécessitant un Plug-In particulier non reconnu par votre navigateur. Cette commande permet aussi d’annuler tout élément prédéfini. Ainsi, vous pouvez enregistrer un fichier .wav avec une extension .gif et préciser au navigateur de considérer les fichiers .gif comme des fichiers audio ! En pratique, on pourra donc utiliser cette commande pour ordonner à PHP de parser d’autres extensions de fichier, .htm par exemple.
Forcer tous les fichiers d’un répertoire à un Mime-Type
Voici la syntaxe à adopter :
ForceType (mime/type)
Par exemple avec la ligne suivante, tous les fichiers du répertoire contenant le fichier .htaccess seront considérés comme étant des fichiers .jpg quelle que soit leur extension :
ForceType image/jpg
Définir les extensions de fichiers par défaut
La syntaxe à suivre est :
DefaultType (mime/type)
Par exemple
DefaultType text/html
Cette option vous permet de définir le comportement par défaut du navigateur face à des extensions lui étant inconnues.
Redirections
Les redirections peuvent être très utiles lors d’une modification de l’architecture des pages Web. Il est possible de rediriger la requête sur un fichier :
RedirectPermanent /home/nemako/www/page1.html /home/nemako/www/nouveaudossier/page1.html
Il est aussi possible de rediriger les requètes vers un répertoire entier, et les rediriger vers un site :
RedirectPermanent /home/nemako/www/dvds/ http://www.nemako-dvs.net/
De cette façon, les requètes vers les anciennes pages dans le répertoire /home/nemako/www/dvds/ seront toutes redirigées vers le site http://www.nemako-dvds.net/. Par exemple, /home/nemako/www/dvds/acteurs.html sera redirigée vers http://www.toto-chevaux.net/acteurs.html.