Peter Kaufmann: RewriteRule für Verzeichnis

Beitrag lesen

Hallo Wolfgang,

erst einmal vielen Dank für deine Antwort. Ich befürchte aber, du hast mein Problem nicht ganz verstanden (habe ich viellicht auch nicht gut genug erklärt).

Du möchtest etwas machen, was jemand wie http://www.woodshed.de/ schon gemacht hat.

Nein. Wenn ich mit einem Browser der englisch als Default Sprache eingestellt hat auf die Seite gehe bekomme ich trotzdem ein fröhliches "Guten Tag!".

Leider komme ich nicht darauf wie die RewriteRule für diesen Fall aussehen muss. Hat jemand eine Idee?

Es gibt keine Rewrite-Rules, die das leisten.

Angenommen

www.example.com/irgendwas.html würde immer umgeleitet werden auf www.example.com/en/irgendwas.html, dann würde *jeder* besucher nur die englische Version sehen. Wenn er dann *deutsch* anklickt, dann müsstest  du das in seinem PC speichern (cookie) denn ein Redirekt würde ihn ja wieder auf die englische Seite bringen.

Nein, so ist das nicht geplannt. Also noch einmal etwas strukturierter:

1. Wenn die Spracheinstellung im Browser richtig ist (z.B. english), und der Besucher die Seite www.example.org/bla.html verlangt, sorgt das Modul MultiViews dafür, daß er als Antwort eine passende Sprachversion erhält (z.B. www.example.org/bla.html.en). - Das funktioniert auch problemlos.

2. Schwierig wird es, wenn die Spracheinstellung des Browsers falsch ist - etwa im Internetcaffee. In diesem Fall rät das Modul MultiViews falsch und mein englischer Besucher bekommt z.B. auf seine Anfrage www.example.org/bla.html eine deutsche Seite zurückgeliefert www.example.org/bla.html.de. Für diesen Fall soll es ein Link "english version" von www.example.org/bla.html.de nach www.example.org/bla.html.en geben. Das Problem ist dann aber, daß beim nächsten Aufruf (foo.html) er wieder auf der falschen Seite landet (www.example.org/foo.html.de).

3. Um das Problem aus (2) zu umgehen möchte ich nicht auf www.example.org/bla.html.en verweisen sondern auf www.example.org/en/bla.html - eine passende RewriteRule (RewriteRule en/(.+[^/]) $1.en [L]) sorgt dann dafür, daß der Besucher letzt endlich trotzdem die Seite www.example.org/bla.html.en zurück geliefert bekommt. Der Vorteil ist, daß jetzt ein relativer Link von bla.html nach foo.html zu
 der URI www.example.org/en/foo.html (also die Datei foo.html.en) führt. Soweit funktioniert das auch ganz gut.

4. Das Problem ist, daß ich nicht weiß wie eine RewriteRule aussehen muss die z.B. ein rewrite von www.example.org/en/foo/ nach www.example.org/foo/index.html.en ausführt (also den speziellen Fall schon, aber den allgemeinen Fall nicht). Solch eine Regel sollte nach Möglichkeit auch die Fälle www.example.org/en/foo/bar/bla/ (mehre Verzeichnisebenen) und www.example.org/en/foo/bar/bla (ohne Slash am Ende) berücksichtigen. Leider bin ich an dem Punkt noch nicht weiter gekommen :-(. Ideen? Tipps?

Grüße,

Peter

--
exp(i * PI) + 1 = 0