mark: Apache: virtual Host ohne virtual Host?

Beitrag lesen

Hallo zusammen,

ich habe lokal einen Apache und verschiedene Bash-Scripts, welche mir meine Code−Snippets, Wikis, Dokumentationen von verschiedenen Quellen (Markdown) Gitlab, Github, DevOps als Html rendert und durchsuchbar macht und diese auch automatisch aktualisiert.

Auch die Ordner-Struktur wird automatisch angelegt:

Document Root
|- dir-listing-style.css
|- "snippets repository A"
|- "wiki repository B"
|- "code repository C"

Im Apache Document-root-Verzeichnis findet sich nur eine css-Datei, welche für das stylen des Apache directory listing vornimmt. Wenn ich also "localhost" aufrufe bekomme ich eine schöne Übersicht (Directory listing) all meiner Snippets.

Nun habe ich aber das Problem, dass Links in den Makrdown Dateien manchmal absolut sind (mit einem forward slash beginnen). Da ich nur einen virtuellen host (Document-root) habe zeigt dann ein Link von "wiki repository B" auf das Document Root Verzeichnis, anstatt "wiki repository B" als Document root zu verwenden.

Ich habe dieses Problem mit mod-proxy "gelöst", indem ich …

  1. kontrolliere ob es sich um einen lokalen Link handelt
  2. dann vergleiche ich Referrer mit dem Ziel des Links
  3. kontrolliere, ob dem Link die erste Subdirectory des Referrers fehlt (z.b.: "wiki repository B")
  4. wenn alles zutrifft setze ich die Subdirectory in den Link ein und leite die Anfrage entsprechend um.

Leider habe ich den entsprechenden Abschnitt meiner Apache Konfiguration gerade nicht zur Hand, dass ich euch dieses Ungetüm zeigen könnte 😉 Diese Lösung funktioniert, scheint mir aber sehr "hacky" in Bezug auf Wartbarkeit. Irgendetwas sagt mir, dass ich das nicht so machen sollte.

Die saubere Lösung, die mir eingefallen ist, wäre für jedes Repository, das ich ziehe einen eigenen, Port-basierten virtual-Host anzulegen. Das würde mein bash script abermals um ein gehöriges Stück erweitern und verkomplizieren. Ich gestehe, im Entwicklungsprozess hatte ich irgendwann keinen Bock mehr auf Bash 😀

Ich würde das dann so machen, dass ich Apache einen gewissen Port-Bereich definiere, welcher dann bei jedem neuen Repository inkrementiert wird. Und die sonstigen Einstellungen (z.B. Document root) setze ich dann mit sed.

Bevor ich das jedoch mache habe ich mit gedacht, ich frag' sicherheitshalber hier nach, ob es nicht eine bessere/einfachere Möglichkeit gibt absolute links ohne Virtuellen Host in ein Unterverzeichnis einzusperren? Oder, ob mir jemand tools empfehlen kann die mir das Anlegen von virtuellen hosts (konkret das rum-sedden in Bash) abnehmen. Irgend ein Kommandozeilen-Tool, das mir das abnimmt?

Danke derweil

mark

P.S.: Falls das von Relevanz ist, ich brauche auch nicht unbedingt apache. Es handelt sich um statische HTML-Seiten. Lighttpd, o.ä. wäre auch eine Möglichkeit.