# Werkbaum — Apache-Konfiguration der produktiven Instanz (D43-Nachtrag 2). # Wird von scripts/deploy-prod.sh als `.htaccess` in die Site-Wurzel gespiegelt. # GitHub Pages ignoriert `.htaccess` (kein Apache) und braucht es auch nicht — # dort ist die Zuordnung schon richtig; die Datei liegt deshalb NICHT in # frontend/public/, sonst landete sie im Pages-Artefakt. # # Warum es sie gibt: Apache kennt die Endung `.md` nicht und sendet dann GAR # KEINEN Content-Type. Der Browser rät daraufhin windows-1252 und macht aus # jedem `—` ein `â€"` — gemessen am 24.08.2026 auf werkbaum.javagil.de, 31 # betroffene Zeilen in llms.md. Dieselbe Datei kommt von GitHub Pages als # `text/markdown; charset=utf-8` korrekt an. # # `.werkbaum` bekommt `text/plain` aus dem in SPEC §12/D24 genannten Grund: # dann zeigt der Browser die Datei an, statt sie herunterzuladen. # # Sollte der Server nach einem Deploy 500 antworten, verbietet seine # `AllowOverride`-Einstellung `AddType` (Klasse FileInfo) — dann gehören die # drei Zeilen in die vhost-Konfiguration und diese Datei entfällt. AddType text/markdown;charset=utf-8 .md AddType text/plain;charset=utf-8 .txt AddType text/plain;charset=utf-8 .werkbaum # PWA-Manifest (D73): ohne Zuordnung liefert Apache die unbekannte Endung # ohne Content-Type aus, und Chromium verwirft das Manifest dann still. AddType application/manifest+json .webmanifest # --- Backend: /api/ an den eigenen Dienst weiterreichen (D77) --------------- # Der Editor spricht das Backend unter derselben Herkunft an (`?live=…`, # D76). Der Weg dorthin ist mod_rewrite mit dem P-Flag: `ProxyPass` ist in # einer `.htaccess` nicht zulässig, und `~/doms//etc/` ist auf diesem # Hoster leer. # # Dass das P-Flag hier ERLAUBT ist, war die offene Frage — manche Hoster # sperren es. Gemessen am 26.08.2026 auf mih00.hostsharing.net: sofortige # Antwort HTTP 200 nach 0,13 s, absichtlich um 30 s verzögerte Antwort # HTTP 200 nach 30,1 s. Apache hält die Verbindung also durch und puffert # nichts weg — Long Polling mit `wait=25` trägt dort nachweislich (D76, # Nachtrag 2). # # Die Portnummer setzt scripts/deploy-prod.sh aus BACKEND_PORT ein; hier steht # ein Platzhalter, damit Port und Dienst nur an EINER Stelle vereinbart sind. # Läuft kein Backend, antwortet /api/ mit 503 — das ist die Wahrheit, und der # Rest der Seite bleibt unberührt. RewriteEngine On RewriteRule ^api/(.*)$ http://127.0.0.1:__BACKEND_PORT__/api/$1 [P,L]