.htaccess - Bitte um Erklärung der Lösung
Linda
- webserver
Hallo zusammen,
auf einem Projekt habe ich zwei Anforderungen.
1. Es gibt eine feste vordefinierte und überschaubare Anzahl an Seiten (die Menge und die Namen sind bekannt). Für diese Seiten gilt die Regel:
http://www.mydomain.de/page1 -> http://www.mydomain.de/page1.php
http://www.mydomain.de/page2 -> http://www.mydomain.de/page2.php
2. Alles, was nicht explizit in der ersten Regel angesprochen wurde, sollte nach der folgenden Regel umgeschrieben werden
http://www.mydomain.de/etwas1 -> http://www.mydomain.de/ordner/etwas1/
http://www.mydomain.de/nocheins -> http://www.mydomain.de/ordner/nocheins/
Ich habe im Netz gesucht und folgende Regel für Nr.2 gefunden:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(([a-z0-9-]+/)*[a-z0-9-]+)$ /ordner/$1/ [L]
Es funktioniert. Und jetzt die Fragen:
1. Kann man den Regex hier irgendwie vereinfachen?
2. Warum funktioniert die erste Anforderung gänzlich OHNE RewriteEngine. Liegt es an der Serverkonfiguration?
Danke für die Hilfe und Gruß, Linda
@@Linda:
- Es gibt eine feste vordefinierte und überschaubare Anzahl an Seiten (die Menge und die Namen sind bekannt). Für diese Seiten gilt die Regel:
http://www.mydomain.de/page1 -> http://www.mydomain.de/page1.php
http://www.mydomain.de/page2 -> http://www.mydomain.de/page2.php
--8<--- Warum funktioniert die erste Anforderung gänzlich OHNE RewriteEngine. Liegt es an der Serverkonfiguration?
Ja, vermutlich ist die Option MultiViews gesetzt. [Apache]
Live long and prosper,
Gunnar
Hallo Gunnar,
Ja, vermutlich ist die Option MultiViews gesetzt. [Apache]
Danke. Scheint ein mächtige Einstellung zu sein. Und spart mir ein Rewrite.
Gruß, Linda
Danke. Scheint ein mächtige Einstellung zu sein. Und spart mir ein Rewrite.
Sie ist eigentlich für etwas anderes gedacht, z.B. um unter generischen Ressourcen entsprechende Inhalte anzubieten.
example.com/foo liefert an einen modernen Client foo.svg mit einem Balkendiagramm aus, an einen älteren Client vielleicht ein foo.png mit dem Diagramm - und an einen Textbrowser ggf. ein foo.html mit einer HTML-Tabelle und den selben Daten.
Gesteuert wird das ganze über das HTTP-Accept-Feld.
Alternativ kann man das System auch für das ausliefern von Alternativen Sprachversionen (oder auch beides) benutzen.
Deutscher Textbrowser bekommt foo.de.html, englischsprachig eingestellter moderner Browser bekommt foo.en.svg