Ce tutoriel vous prĂ©sente les meilleures solutions open source pour afficher un listing professionnel et rĂ©actif de vos rĂ©pertoires Apache. Quack! đŠ
Au lieu d'utiliser des solutions complexes comme h5ai ou Snap2HTML, vous pouvez customiser le comportement natif d'Apache avec un simple fichier .htaccess.
Perishable Press propose une configuration .htaccess complÚte et optimisée pour améliorer les listings par défaut d'Apache avec mod_autoindex.
Site officiel : Perishable Press - Better Default Directory Views
Licence : Libre d'utilisation (public domain / open source)
Avantages : Solution complÚte, iconographie détaillée par type de fichier, descriptions personnalisées, fichiers header/footer inclus
Créez un fichier .htaccess à la racine de votre répertoire avec le contenu suivant :
# ============================================================================
# STRONG HTACCESS PROTECTION
# ============================================================================
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
</Files>
# ============================================================================
# DIRECTORY CUSTOMIZATION
# ============================================================================
<IfModule mod_autoindex.c>
# SET INDEX OPTIONS
IndexOptions IgnoreCase FancyIndexing FoldersFirst NameWidth=* DescriptionWidth=* SuppressHTMLPreamble
# SET DISPLAY ORDER
IndexOrderDefault Descending Name
# SPECIFY HEADER FILE
HeaderName header.html
# SPECIFY FOOTER FILE
ReadmeName footer.html
# IGNORE THESE FILES
IndexIgnore header.html footer.html favicon.ico .htaccess .ftpquota .DS_Store icons *.log *,v *,t .??* *~ *#
# DEFAULT ICON
DefaultIcon icons/generic.gif
# BLANK ICON (Optionnel - commenté par défaut)
# AddIcon icons/purple.gif ^^BLANKICON^^
# FOLDER AND PARENT ICONS
AddIcon icons/grey.gif ^^DIRECTORY^^
AddIcon icons/green.gif ..
# SPECIFIC FILE ICONS
AddIcon icons/blue.gif .txt .pdf .zip .rar .jpg .jpeg .jpe .png .gif .mpg .ico .js .log .doc .css .html
AddIcon icons/red.gif readme
AddIcon (MP3,icons/arrow.gif) .mp3
# CUSTOM IMAGE ICONS
AddIconByType (IMG,icons/image.gif) image/*
# GZIP ENCODING ICON
AddIconByEncoding (CMP,icons/compress.gif) x-compress x-gzip
# ========================================================================
# FILE DESCRIPTIONS
# ========================================================================
AddDescription "<span class='description'>MPEG Layer 3 Format</span>" .mp3
AddDescription "<span class='description'>GZIP compressed TAR archive</span>" .tgz .tar.gz
AddDescription "<span class='description'>GZIP compressed archive</span>" .Z .z .gz .zip
AddDescription "<span class='description'>RAR compressed archive</span>" .rar
AddDescription "<span class='description'>TAR compressed archive</span>" .tar
AddDescription "<span class='description'>ZIP compressed archive</span>" .zip
AddDescription "<span class='description'>Windows executable file</span>" .exe
AddDescription "<span class='description'>Common Gateway Interface</span>" .cgi
AddDescription "<span class='description'>Joint Photographics Experts Group</span>" .jpg .jpeg .jpe
AddDescription "<span class='description'>Graphic Interchange Format</span>" .gif
AddDescription "<span class='description'>Portable Network Graphic</span>" .png
AddDescription "<span class='description'>Vector graphic</span>" .ps .ai .eps
AddDescription "<span class='description'>Hypertext Markup Language</span>" .html .shtml .htm
AddDescription "<span class='description'>Cascading Style Sheet</span>" .css
AddDescription "<span class='description'>DocType Definition</span>" .dtd
AddDescription "<span class='description'>Extensible Markup Language</span>" .xml
AddDescription "<span class='description'>Win32 compressed HTML help</span>" .chm
AddDescription "<span class='description'>Adobe Portable Document Format</span>" .pdf
AddDescription "<span class='description'>Plain text file</span>" .txt .nfo .faq .readme
AddDescription "<span class='description'>Unix man page</span>" .man
AddDescription "<span class='description'>Email data</span>" .eml .mbox
AddDescription "<span class='description'>Microsoft Word document</span>" .doc
AddDescription "<span class='description'>PHP: Hypertext Preprocessor script</span>" .php .php3 .php4
AddDescription "<span class='description'>PHP: Hypertext Preprocessor source code</span>" .phps
AddDescription "<span class='description'>Javascript</span>" .js
AddDescription "<span class='description'>Java code</span>" .java
AddDescription "<span class='description'>Unix shell script</span>" .sh .shar .csh .ksh .command
AddDescription "<span class='description'>Mac OS X shell script</span>" .command
AddDescription "<span class='description'>Configuration file</span>" .conf
AddDescription "<span class='description'>Mac OS X terminal</span>" .term
AddDescription "<span class='description'>BitTorrent file</span>" .torrent
AddDescription "<span class='description'>Windows link</span>" .lnk .url
# DEFAULT DESCRIPTION
AddDescription "[<span class='description'>unknown item..</span>]" *
</IfModule>
CrĂ©ez un fichier header.html au mĂȘme niveau que le .htaccess :
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>đ Explorateur de Fichiers</title>
<style type="text/css">
body {
background: #f5f5f5;
margin: 30px;
padding: 0;
color: #333;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}
h1 {
font: 2.2em Georgia, serif;
color: #222;
margin-bottom: 20px;
}
h1 a:hover, h1 a:active {
text-decoration: none;
}
a:link {
text-decoration: none;
color: #0066cc;
}
a:visited {
text-decoration: none;
color: #663399;
}
a:hover, a:active {
text-decoration: underline;
color: #cc0000;
}
pre {
font: 0.95em/1.6em "Courier New", Courier, monospace;
margin: 0;
padding: 10px;
color: #555;
background: white;
border: 1px solid #ddd;
border-radius: 4px;
overflow-x: auto;
}
pre img {
display: inline;
margin-right: 8px;
vertical-align: middle;
}
img {
border: none;
}
hr {
border: none;
border-top: 1px solid #ddd;
margin: 15px 0;
}
.description {
font-style: italic;
font-size: 85%;
color: #888;
}
</style>
</head>
<body>
<h1>đ Explorateur de Fichiers</h1>
<p style="color: #666; margin-bottom: 20px;">Naviguez et téléchargez vos fichiers ci-dessous</p>
CrĂ©ez un fichier footer.html au mĂȘme niveau que le .htaccess :
<hr>
<pre style="text-align: center; font-size: 0.9em; color: #999;">
<em>Explorateur de fichiers réactif - Alimenté par Apache</em>
</pre>
<pre style="text-align: center;">
<a href="/" title="Accueil">đ Retour Ă l'accueil</a> |
<a href=".." title="Parent">đ Dossier parent</a>
</pre>
</body>
</html>
/votre-repertoire/
âââ .htaccess â Fichier de configuration Apache
âââ header.html â En-tĂȘte personnalisĂ©
âââ footer.html â Pied de page personnalisĂ©
âââ icons/ â Dossier avec les icĂŽnes (tĂ©lĂ©chargez depuis Apache)
â âââ generic.gif
â âââ grey.gif
â âââ green.gif
â âââ blue.gif
â âââ red.gif
â âââ ...
âââ fichier1.pdf
âââ fichier2.mp3
âââ image.jpg
âââ sous-dossier/
Apaxy est un thÚme Apache simple et personnalisable pour les listings de répertoires avec icÎnes modernes et styling CSS.
DépÎt GitHub : Apaxy - GitHub
Licence : GPLv3 (GNU General Public License v3) - Libre d'utilisation personnelle et commerciale avec obligations
Ce que la licence GPLv3 permet :
Obligations de la licence GPLv3 :
Avantages : Design moderne, icÎnes SVG/PNG de qualité, configuration simple, excellent support de la responsivité
.htaccess â Configuration Apacheheader.html â En-tĂȘte personnalisĂ©footer.html â Pied de page personnalisĂ©theme/ â Dossier contenant CSS et icĂŽnesLe fichier .htaccess utilise la directive IndexOptions pour contrĂŽler l'apparence et le comportement du listing. Voici les options les plus importantes :
| Option | Effet |
|---|---|
FancyIndexing |
Active le mode avec icÎnes et colonnes (hautement recommandé) |
HTMLTable |
Utilise un <table> HTML au lieu de <pre> â ESSENTIEL pour la responsivitĂ© |
FoldersFirst |
Affiche les dossiers en premier, puis les fichiers |
IconsAreLinks |
Les icÎnes deviennent cliquables (améliore l'UX) |
VersionSort |
Tri intelligent des versions (v1, v2, v10 au lieu de v1, v10, v2) |
IgnoreCase |
Tri insensible Ă la casse |
SuppressHTMLPreamble |
Supprime le code HTML auto-gĂ©nĂ©rĂ© (pour utiliser des en-tĂȘtes personnalisĂ©s) |
SuppressSize |
Masque la colonne « taille » |
SuppressLastModified |
Masque la colonne « date de modification » |
SuppressDescription |
Masque la colonne « description » |
NameWidth=* |
La colonne nom s'adapte automatiquement Ă la largeur disponible |
DescriptionWidth=* |
La colonne description s'adapte automatiquement |
IndexOptions IgnoreCase FancyIndexing FoldersFirst NameWidth=* DescriptionWidth=* SuppressHTMLPreamble
Explication :
IgnoreCase â Tri insensible Ă la casseFancyIndexing â Activez les icĂŽnesFoldersFirst â Dossiers en premierNameWidth=* â Colonne nom adaptativeDescriptionWidth=* â Colonne description adaptativeSuppressHTMLPreamble â Permet d'utiliser un header.html personnalisĂ©Apache gĂ©nĂšre automatiquement des en-tĂȘtes de colonnes cliquables qui permettent aux utilisateurs de trier le listing dynamiquement, sans rechargement de page.
Les paramĂštres de URL suivants contrĂŽlent le tri :
| ParamĂštre | Effet |
|---|---|
C=N |
Tri par nom |
C=M |
Tri par date de modification |
C=S |
Tri par taille |
C=D |
Tri par description |
O=A |
Ordre ascendant (A Ă Z) |
O=D |
Ordre descendant (Z Ă A) |
F=0 |
Liste simple (sans icĂŽnes) |
F=1 |
Fancy indexing (avec icĂŽnes) |
Voici des exemples concrets que vous pouvez utiliser ou que les utilisateurs gĂ©nĂ©reront en cliquant sur les en-tĂȘtes :
# Tri par nom (ascendant)
http://exemple.com/fichiers/?C=N;O=A
# Tri par nom (descendant)
http://exemple.com/fichiers/?C=N;O=D
# Tri par taille (fichiers les plus volumineux en premier)
http://exemple.com/fichiers/?C=S;O=D
# Tri par date (plus récents en premier)
http://exemple.com/fichiers/?C=M;O=D
# Tri par date (plus anciens en premier)
http://exemple.com/fichiers/?C=M;O=A
# Tri par description
http://exemple.com/fichiers/?C=D;O=A
# Fancy indexing avec tri par nom
http://exemple.com/fichiers/?C=N;O=A&F=1
# Liste simple (sans icĂŽnes)
http://exemple.com/fichiers/?F=0
Quand Apache gĂ©nĂšre le listing, il crĂ©e des en-tĂȘtes de colonne cliquables qui comportent ces paramĂštres. L'utilisateur clique sur le nom de la colonne (Nom, Date, Taille, Description) et Apache rĂ©gĂ©nĂšre le listing avec le tri appliquĂ© â c'est entiĂšrement automatique!
Avantage : Aucun JavaScript requis, fonctionne mĂȘme avec JavaScript dĂ©sactivĂ©.
| CritĂšre | .htaccess seul | Perishable Press | Apaxy |
|---|---|---|---|
| Installation | 1 fichier | 3-4 fichiers | Cloner le dépÎt |
| Design | Basique | Professionnel | Moderne |
| Responsivité | Bonne (HTMLTable) | Excellente | Excellente |
| IcĂŽnes | Basiques (GIF) | ComplĂštes (GIF) | Modernes (SVG/PNG) |
| Personnalisation | Limitée | Moyenne | Haute (thÚmes) |
| Descriptions fichiers | Supportées | ComplÚtes (80+ types) | Supportées |
| Tri dynamique | â Oui | â Oui | â Oui |
| Dépendances | Aucune | Aucune | Aucune |
| Licence | Apache natif | Public domain | (GPL-3.0-or-later) |
| Recommandé pour | Débutants | Usage professionnel | Design moderne |
Voici les étapes pour mettre en place votre solution :
mkdir /var/www/html/fichiers
nano .htaccess(Collez le contenu complet fourni ci-dessus)
mkdir icons
http://votre-domaine.com/fichiers/
mod_autoindexOptions +Indexes fonctionne seulicons/ est incorrect/usr/share/apache2/icons/ (Linux)AllowOverride All est dĂ©finisudo systemctl restart apache2HeaderName et ReadmeName tels que dĂ©finisAvec un simple fichier .htaccess, vous pouvez transformer un listing Apache basique en explorateur de fichiers professionnel, rĂ©actif et personnalisĂ©. Quack! đŠ
Les avantages principaux :
Prochaines Ă©tapes : Choisissez votre solution prĂ©fĂ©rĂ©e (Perishable Press ou Apaxy), copiez-collez les fichiers fournis ci-dessus, et testez immĂ©diatement â c'est vraiment aussi simple que ça!