Es soll erreicht werden, dass der Apache Webserver (hier auf Debian Buster)
die Verzeichnisinhalte bestimmter Ordner/ aller Ordner anzeigt.
Hintergrund ist, dass die betreffenden Verzeichnisse eines Windows Dateiservers
in das Verzeichnis des Apache gemountet sind (andere Anleitung). Anwenderinnen und Anwender
der Windows-Umgebung haben Änderungsrecht für die Ordner auf dem Dateiserver. Diese
Änderungen sollen dann immer auch im Intranet sichtbar sein.
Natürlich kann man die Dateien auch lediglich in das betreffende Verzeichnis des
Apache kopieren und die Aktion sich mit dem Mounten sparen.
Eine automatische Synchronisation mit rsync (andere Anleitung) ist auch vorstellbar.
In diesem Beispiel ist der Apache installiert und die gesamte Website läuft. Sie ist in html statisch erstellt. Die Dateien für die Website liegen aus der Sicht des Servers in diesem Ordner
/var/www/html
Darin befinden sind die weiteren Dateien und Verzeichnisse
Datei .htaccess Datei index.html Datei 404.html Ordner css Ordner de Ordner icons Ordner pics Ordner scripts Ordner videos
Bearbeitet wird die Datei
/etc/apache2/apache2.conf
In diesem Beispiel wird angenomen, dass fancyindexing für alle Verzeichnisse
genutzt werden soll. Darum wird fancyindexing ab der Ebene '/var/www/' aktiviert.
Dazu erfolgen die Einträge unter 'Directory /var/www/'.
Der Platz für Dateinamen ist auf 80 Zeichen eingestellt.
IndexIgnore markiert, dass die Einträge danach/ bestimme Dateitypen
nicht angezeigt werden sollen. Die Liste kann erweitert werden.
Diese Einstellung erlaubt dann das Durchsuchen aller Unterordner. Will man auf einfache Art verhindern, dass die Inhalte eines Ordners angezeigt werden, speichert man in dem betreffenden Ordner eine leere Datei mit dem Namen 'index.html'. Wenn dann jemand weiß, dass es den betreffenden Ordner gibt und dahin navigiert, wird eine leere Seite angezeigt.
<Directory /> Options FollowSymLinks AllowOverride None Require all denied </Directory> <Directory /usr/share> AllowOverride None Require all granted </Directory> <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted IndexOptions FancyIndexing IndexOptions NameWidth=80 DescriptionWidth=450 IconHeight=16 IconWidth=16 SuppressHTMLPreamble FoldersFirst ScanHTMLTitles IndexIgnore cgi-bin error includes pics programme css *.php *.ico *.db </Directory>
# service apache2 reload
Die Ansicht ist zwar aufgehübscht und es gibt mehr Platz für die Dateinamen. Jedoch ist das gewohnte Layout der Website weg, das über die CSS-Datei zugesteuert wird.
Damit das Layout angewendet wird, müssen zwei Dateien erstellt werden, eine für den Kopfbereich, die auch die CSS-Einstellungen enthält und eine für den Fußbereich, auf die werden die CSS-Einstellungen der ersten Datei dann übernommen.
Die Konfigurationsdatei wird dann leicht geändert. Der Pfad zu den Dateien für Kopf- und Fußzeile wird eingetragen.
<Directory /> Options FollowSymLinks AllowOverride None Require all denied </Directory> <Directory /usr/share> AllowOverride None Require all granted </Directory> <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted IndexOptions FancyIndexing IndexOptions NameWidth=80 DescriptionWidth=450 IconHeight=16 IconWidth=16 SuppressHTMLPreamble FoldersFirst ScanHTMLTitles HeaderName ../de/headline-de-listing.html ReadmeName ../de/footer-de-listing.html IndexIgnore cgi-bin error includes pics programme css *.php *.ico *.db </Directory>
Diese beiden Dateien müssen natürlich auf dem System vorhanden sein/ noch eingerichtet werden.
Für Ordner die in diesem Beispiel aus der Sicht des Servers auf dieser Ebene liegen, also zum Beispiel...
/var/www/download/ /var/www/weitere-dateien/
...ist kein zusätzlichen Eintrag in /etc/apache2/apache2.conf und sind keine gesonderten Kopf- und Fußzeilendateien erforderlich.
Leider ist es so, dass es nicht für Unterordner funktioniert. Also...
/var/www/download/unterordner /var/www/weitere-dateien/noch-ein-ordner
...werden zwar nach den Einstellungen in /etc/apache2/apache2.conf
mit mehr Platz angezeigt. Damit für diese Unterordner das aufgehübschte
Layout genutzt wird, muss in '/etc/apache2/apache2.conf' der komplette
Pfad aus Serversicht angegeben werden. Weiter müssen die Kopf- und
Fußzeilendatei mit in dem Ordner vorhanden sein. Das klappt jedoch
lediglich bis zu dieser Ebene. Bei tiefer liegenden Verzeichnissen
werden die Pfadangaben ignoriert.
Die Pfadangabe ist also so zu ändern, dass die in eine andere Ebene
verweist, in der Kopf- und Fußzeilendatei liegen, war nicht
erfolgreich.
Also: Kopf- und Fußzeilendatei mit kopieren und in '/etc/apache2/apache2.conf' Pfad so ändern, dass auf eben diesen Ordner verwiesen wird. Wenn man mag, kann man den Namen gleich lassen und jeweils eine individuelle Überschrift in den Quellcode eintragen.
<Directory /> Options FollowSymLinks AllowOverride None Require all denied </Directory> <Directory /usr/share> AllowOverride None Require all granted </Directory> <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted IndexOptions FancyIndexing IndexOptions NameWidth=80 DescriptionWidth=450 IconHeight=16 IconWidth=16 SuppressHTMLPreamble FoldersFirst ScanHTMLTitles HeaderName ../de/headline-de-listing.html ReadmeName ../de/footer-de-listing.html IndexIgnore cgi-bin error includes pics programme css *.php *.ico *.db *.htm *.html </Directory> <Directory /var/www/download/unterordner/> Options Indexes FollowSymLinks AllowOverride None Require all granted IndexOptions FancyIndexing IndexOptions NameWidth=80 DescriptionWidth=450 IconHeight=16 IconWidth=16 SuppressHTMLPreamble FoldersFirst ScanHTMLTitles # Kopf- und Fusszeilendatei mit in den Ordner kopieren. # Also keine weitere Pfadangabe zu diesen Dateien angeben. # Die sind ja in dem Ordner bei den Dateien, die gelistet werden. HeaderName headline-de-listing.html ReadmeName footer-de-listing.html IndexIgnore cgi-bin error includes pics programme css *.php *.ico *.db *.htm *.html </Directory>
Es ist ratsam, die html-Dateien im Ordnerlisting nicht anzeigen zu lassen, darum: '*.html'.
In dem speziellen Fall ist es so, dass ein Windowsordner in Linux gemountet
ist, der weitere Unterordner enthält (andere Anleitung, also Linux mountet freigegebene
Windows-Ordner und zeigt deren Inhalte nun an). Da werden nun leider
die html-Dateien mit dem Windows Dateiexplorer im Windows-Verzeichnis anzeigt,
wenn User den Weg mit dem Windows-Dateiexplorer klicken.
Das fange ich so ab, dass die Kopf- und Fußzeilendatei im
Windows-Verzeichnis über das Kontextmenü als versteckte Datei markiert sind.
# service apache2 reload
<style> [Hier hinein die Inhalte des HTML-Head und der CSS-Datei kopieren.] </style> [Hier den HTML-Quelltext einfügen, der über den gelisteten Dateien angezeigt werden soll, eventuell auch eine individuelle Überschrift und ein Hinweistest, wie alles funktioniert. Beispiel:] Ein Klick auf 'Parent Directory' bringt Sie eine Ebene nach oben Ein Klick auf 'Home' bringt Sie zur Home-Page / Eingangsseite.
[Hier den HTML-Quelltext einfügen.] [Dieses Beispiel setzt voraus, dass es eine entsprechende Definition in der CSS-Datei und den Anker 'top' gibt.] <div class="footer"> <a title="Zum Seitenanfang / top of page" href="#top">↑↑↑</a> | Domainname | <a title="Zum Seitenanfang / top of page" href="#top">↑↑↑</a> </div>
Wenn die Verzeichnisinhalte angezeigt werden, kommt man über einen Klick auf 'parent directory' immer eine Ebene höher und am Ende dann wieder zur 'index.html' im Hauptverzeichnis. Dann wird die 'Home'-Page angezeigt.
In dem obigen Beispiel werden die Icons genutzt, die der Apache mitbringt. Dabei zu bleiben, hat den Vorteil, dass man an dieser Stelle nichts ändern muss, wenn die Website mal umziehen sollte.
In anderen Anleitungen habe ich gelesen, dass die Einstellungen über eine .htaccess-Datei vorgenommen werden. Das hat bei mir mit Debian nicht geklappt.
Der Vollständigkeit halber gebe ich hier den Inhalt wieder. Dies hier hat unter Windows 10 und xampp funktioniert. Hier sind auch Pfade zu Icons hinterlegt, die gesondert beschafft werden müssen.
# Verzeichnisinhalte anzeigen Options +Indexes IndexOptions FancyIndexing IndexOptions NameWidth=80 DescriptionWidth=450 IconHeight=16 IconWidth=16 SuppressHTMLPreamble FoldersFirst ScanHTMLTitles HeaderName ../de/headline-de-listing.html ReadmeName ../de/footer-de-listing.html AddIcon ../icons/16px/avi.png *.avi AddIcon ../icons/16px/bmp.png *.bmp AddIcon ../icons/16px/csv.png *.csv AddIcon ../icons/16px/_page.png *.doc *dot AddIcon ../icons/16px/html.png *.html *.shtml AddIcon ../icons/16px/jpg.png *.jpg *.jpeg AddIcon ../icons/16px/odt.png *.odt AddIcon ../icons/16px/ott.png *.ott AddIcon ../icons/16px/pdf.png *.pdf AddIcon ../icons/16px/png.png *.png AddIcon ../icons/16px/rtf.png *.rtf AddIcon ../icons/16px/tiff.png *.tif AddIcon ../icons/16px/txt.png *.txt AddIcon ../icons/16px/zip.png *.zip IndexIgnore cgi-bin error includes pics programme css *.php *.ico *.db # Fehler 404-Meldung ErrorDocument 404 /404.html
Insgesamt dauert es schon einen Moment, die Strukturen einzurichten und die Dateien bereit zu stellen. Dann hat man eine Struktur, die geänderte Inhalte dynamisch anzeigt, wenn man die Version mit den gemounteten Windowsordnern nutzt. Da spielt es dann (beinahe) keine Rolle, wo im Netzwerk die Dateien gespeichert sind. Hauptsache, der Ordner kann gemountet werden. Verteilt gespeicherte Inhalte lassen sich so 'nahe beieinander' darstellen.
Quellen:
http://michael-puff.de/Programmierung/Artikel/FancyIndexing.shtml
https://httpd.apache.org/docs/2.4/mod/mod_autoindex.html