http://kleider.herbaer.de: htaccess-Dateien


Die .htaccess-Dateien

Hier beschreibe ich Einstellungen in htaccess-Dateien, die nicht an anderer Stelle beschrieben sind.

Verschiedene Inhalts-Typen für ein Dokument

Das Unterverzeichnis DOCUMENT_ROOT/source enthält Quelltexte und Erläuterungen. Die Surferin soll XSLT-Dateien sowohl als XML-Dateien mit der Transformation zu ihrer eigenen Darstellung als auch als Text (Quelltext) sehen können. Ich nutze das Suffix ?t, um anzuzeigen, dass ein Dokument als Text zu übertrgen ist:

# DOCUMENT_ROOT/source/.htaccess
RewriteCond %{QUERY_STRING} ^t$
RewriteRule . - [type=text/plain;charset=UTF-8]

Verweise auf DocBook-Stylesheets

Die Quelltext-Dateien, die den XHTML-Text erzeugen, binden DocBook-Stylesheet-Dateien ein. Die Web-Präsentation des Quelltextes enthält Verweise auf die DocBook-Stylesheet-Dateien, die lokal auf meinem Rechner vorhanden sind, aber nicht auf dem Web-Server.

Ich beantworte Anfragen mit dem Code 404 (Dokument nicht gefunden) und verweise auf die Quellen und Hilfen zu DocBook. Deshalb leite ich Anfragen in das Verzeichnis e/db um:

# DOCUMENT_ROOT/.htaccess
RewriteRule ^usr/(?:.*/)docbook/(.*)$ e/db/$1

Das Verzeichnis e/db enthält die Datei e/db/.htaccess mit der Anweisung

ErrorDocument 404 /e/db/404.xhtml

Verschiedene Sprachen

Die Besucherin meiner Website soll leicht ihre bevorzugte Sprache wählen können. Dazu leite ich die URL-Pfade /l/LANG/* zu der Version in der Sprache LANG um:

# DOCUMENT_ROOT/l/.htaccess

RewriteEngine On
RewriteBase /

# Bilddateien hängen nicht von der Sprache ab
RewriteRule (?:[^/]+)/(.*?\.jpg)$ $1 [L]

# Zur Startseite?
RewriteRule ^([^/#]+)((?:#.*)?)$ l/$1/index.xhtml$2  [L,R]
RewriteRule ^([^/#]+)/$          index.xhtml.$1      [L]

# Bildergeschichte?
RewriteRule ^([^/]+)/(s2[^/#]+)((?:#.*)?)$  l/$1/$2/story.xml$3 [L,R]
RewriteRule ^([^/]+)/(s2[^/#]+)/((?:#.*)?)$ $2/story.xml.$1$3    [L]

# Existiert die Version in der gewünschten Sprache?
RewriteCond %{DOCUMENT_ROOT}/$2.$1. -f
RewriteRule ([^/#]+)/([^#]+)((?:#.*)?)$ $2.$1$3 [L]

# Wenn nicht,
# dann suchen wir mittels "content negotiation" die passende Version
RewriteRule ([^/]+)/(.*)$ $2 [L]