Moin!
Was ist schlimm daran, dass sich jemand auf seine Sprachversion ein Bookmark setzt?
ich hielte es für unangebracht unnötig Links und Bookmarks zu unterstützen die sich womöglich kurzfristig ändern.
Ok. "Cool URIs don't change".
Was hindert dich, jetzt eine Struktur zu erstellen und später mit entsprechenden Regeln (je Sprachvariante dürfte das exakt _eine_ Regel sein) Redirects zu machen.
Schön, dass du dich um die Dauerhaftigkeit deiner URLs kümmerst - aber du wälzt die Problematik auf den Benutzer ab und ignorierst die Unmöglichkeit deines Vorhabens.
Dass ich jetzt noch keine Struktur zur Mehrsprachigkeit, die sich - ausser search- in der Adresse niederschlägt, möchte, sollte doch wohl hinreichend klar geworden sein!
Ja. Dass ich dir konstant erklären will, dass es nicht funktioniert, offenbar nicht.
Überleg doch mal selbst: Wenn du die Sprachwahl mit einem Parameter "?lang=en" regelst, dann hast du nicht mehr dieselbe URL. Dann hast du außerdem die Aufgabe, später bei Änderungen der URL-Struktur trotzdem (entsprechend deines Anspruchs) eine englische Seite auszuliefern.
Genau dasselbe würde deine Aufgabe sein, wenn du alle Requests nach "/irgendein/pfad/index.en.html" mit mod_rewrite oder RedirectMatch redirecten würdest nach "/en/irgendein/pfad/index.html".
Methode 2 erfordert dann, wenn es jemals soweit kommt, eine entsprechende Ergänzung in der Konfiguration (sinnvollerweise RedirectPermanent). Methode 1 erfordert _jetzt_ und später entsprechend dynamische Seitenausgabe, keine statische.
Ich würde Methode 2 wählen.
Ein Browser, der ein und denselben Request zweimal an den Server sendet, kriegt ganz grundsätzlich zweimal dieselbe Antwort [....]
Sorry, aber hier entzieht sich dein Posting wohl endgültig dem Zusammenhang.
Wo willst du aus meinen Formulierungen einen gleichen Request hernehmen, wo du sowohl selbst einen Text mit search zitiert hast, als auch den Link auf ..de.html (oder ..en.html) hättest lesen müssen?
Du willst, ohne dass sich die URL im Browser ändert, zwei Sprachversionen ausgeben. Daraus entnehme ich, dass der Browser für zwei identische Requests zwei verschiedene Antworten kriegen soll. Und das geht eben nicht.
Ist das Fernsehprogramm bei dir so schlecht oder drück ich mich wirklich so umständlich aus?
Das Fernsehprogramm ist so schlecht, dass ich gar kein Fernsehen gucke. Das ist aber leider Dauersymptom des gesamten Fernsehprogramms über die gesamte Woche. Das würde jetzt aber zu weit vom Thema wegführen. :)
"Welche URL bei alledem angezeigt wird, ist irrelevant. Sollte es zumindest sein."
Ja wenn das wirklich so irrelevant ist wie du schreibst, dann kann der Server ja wohl doch die angezeigte URL fröhlich andern!
Ein Server kann die angezeigte URL ändern, indem er Redirects aussendet. Dadurch wird der Browser die in der Zeile angezeiget URL ändern und die neue URL laden und anzeigen. Wenn du von index.en.html redirectest nach index.html, und diese Adresse per Automatik zur Anzeige der deutschen Version führt, weil das im Browser so konfiguriert ist, dann ist das so und führt bei deinem Problem zu keiner Lösung.
Also nochmals die Ausgangsfrage, wie kann ich denn doch die URL ändern? Doch nicht etwa mit rewrite?
Nein, du kannst die URL, die im Browser angezeigt wird, nicht vom Server aus bestimmen. Die URL bestimmt, was im Browser angezeigt wird.
Rewriting ist ein serverinterner Prozess, bei der eine URL, die von außen angefragt wird, intern umgesetzt wird zu einer internen URL.
Das Ergebnis eines Rewritings kann sein:
a) die Ausgabe eines Redirects. Das veranlaßt den Browser dann sichtbar, eine neue URL zu laden
b) die interne Umänderung einer URL, welche dann unter der angefragten URL ausgeliefert wird.
Methode b) würde beispielsweise erlauben, dass man beliebige Grafiken aus einem Verzeichnis abrufen kann - und wenn eine angefragte Grafik nicht existiert, dann wird stattdessen eine Defaultgrafik geliefert.
Was nicht geht: Ein und dieselbe URL in diesem internen Prozess einmal auf die deutsche Seite verzweigen lassen und einmal auf die englische, ohne dass diese Entscheidung sich im gesamten Request irgendwo durch eine Änderung zeigt.
Beispiel aus der realen Welt: Wenn du in der Kneipe beim Wirt einmal bestellst "Gib mir ein Bier" und ein anderes Mal bestellst du "Gib mir ein Bier", dann kriegst du zweimal dasselbe Bier. Erst wenn du durch irgendeine Zusatzinformation deutlich machst, dass du das eine Mal ein Astra, das andere Mal ein Jever willst, kriegst du unterschiedliche Biere.
Du willst derzeit auf deinem Webserver, dass der Besucher durch die Bestellung "Gib mir ein Bier" ganz nach seinem Wunsch mal Astra, mal Jever kriegt, ohne dass Zusatzinformationen die Bestellung verdeutlichen. Dabei ist irgendwie klar, dass man bei "Gib mir ein Bier" vermutlich erstmal die Hausmarke kriegt, und nur, wenn man "Gib mir ein Astra" oder "Gib mir ein Jever" exakt definiert, welches Bier man möchte.
Die Bestellung kann also "Gib mir ein Astra" lauten (entspricht index.de.html), oder meinetwegen auch "Gib mir ein Bier, ein Astra" (entspricht index.html?lang=de), oder du kannst auch ein T-Shirt "Ich bin Astra-Trinker" tragen und "Gib mir ein Bier" verlangen, woraufhin der Wirt, dein T-Shirt lesend, ein Astra liefern wird (entspricht der Content-Language-Negotiation).
Es wird aber nicht funktionieren, dass du nur mit der Bestellung "Gib mir ein Bier" und dem Astra-Shirt ein Jever kriegst. Da mußt du schon konkret werden und "Gib mir ein Jever" oder "Gib mir ein Bier, ein Jever" verlangen.
Alles klar?
- Sven Rautenberg
"Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
(fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)