Apache / Content Negotiation / Multiviews / Reihenfolge
Thoralf Knuth
- webserver
Hallo allerseits,
ich sortier grade die Sprachen für meine Homepage. Dabei nutze ich die Content Negotiation, was auch weitestgehend klappt.
Die .htaccess hat nur eine Zeile, die die Multiviews-Option einschaltet.
Ich teste lokal auf Apache 1.3.26 und beim Hoster auf 1.3.27. CheckSpelling ist lokal aus, beim Hoster ein.
Folgendes klappt einwandfrei: Entsprechend test.html.de und test.html.en bei Aufruf von test.html
Nicht klappt: test.de.html bzw. test.en.html. Lokal gibt 404, beim Hoster dann 300.
Wer's als Beispiel sehen will:
http://www.thoralf-knuth.net/test.html geht nicht.
http://www.thoralf-knuth.net/test.de.html geht.
http://www.thoralf-knuth.net/test.en.html geht.
http://www.thoralf-knuth.net/test geht.
http://www.thoralf-knuth.net/test/ geht nicht.
Nun gibt es aber unter http://httpd.apache.org/docs/content-negotiation.html am Punkt "Variants with no Language" genau mein Beispiel. Jedoch auch da den Hinweis, dass für mein Beispiel test.html ein ungültiger Link ist.
Wie sorge ich am besten (sicher+performant) dafür, dass auch test.html genutzt werden kann, ohne die Forum test.html.* zu verwenden.
Die Frage steht, weil eben doch Schlauberger, Suchmaschinen und doofe Browser gelegentlich aus http://www.thoralf-knuth.net/test >> http://www.thoralf-knuth.net/test/ machen.
Gruss & Dank, Thoralf
Hi Thoralf,
http://www.thoralf-knuth.net/test.html geht nicht.
http://www.thoralf-knuth.net/test.de.html geht.
http://www.thoralf-knuth.net/test.en.html geht.
http://www.thoralf-knuth.net/test geht.
http://www.thoralf-knuth.net/test/ geht nicht.
Wie sorge ich am besten (sicher+performant) dafür, dass auch test.html genutzt werden kann, ohne die Forum test.html.* zu verwenden.
alles, was _hinter_ dem zu Beginn der Verhandlung vorliegenden URL folgt, ist "Verhandlungsmasse".
Wenn Du mit "test.html" zwischen einer deutschen und einer englischen Version verhandeln willst, dann müssen die Endungen, welche diese Sprachen beschreiben, _hinter_ der Endung ".html", welche Du der Verhandlung explizit entzogen hast, folgen - also "test.html.de" und "test.html.en" (oder besser "test.html.html" als "Default-Sprache").
Exakt dieses Modell verwendet http://www.schroepl.net/projekte/mod_gzip/ - wobei sonstige Features wie "Directory Default" weiterhin nutzbar bleiben.
Hättest Du nur "test" als Link verwendet, dann wäre die Reihenfolge der beiden Endungen egal gewesen - aber eben _nur_ dann.
Viele Grüße
Michael
Hallo Michael,
Wie sorge ich am besten (sicher+performant) dafür, dass auch test.html genutzt werden kann, ohne die Forum test.html.* zu verwenden.
alles, was _hinter_ dem zu Beginn der Verhandlung vorliegenden URL folgt, ist "Verhandlungsmasse".
Soweit ist mir das klar. Ich will diese Reihenfolge aber 'aufbrechen'. Bisher habe ich nur die Möglichkeit gefunden, das eben über eine feste Tabelle zu machen.
Gibt es eine Möglichkeit, .de.html serverseitig (RewriteEngine?) zu 'tauschen'?
Wenn Du mit "test.html" zwischen einer deutschen und einer englischen Version verhandeln willst, dann müssen die Endungen, welche diese Sprachen beschreiben, _hinter_ der Endung ".html",
Genau das will ich wegen reiner Bequemlichkeit nicht, da mein Windows leider zu doof ist, .php.de bzw. .html.de entsprechend zuzuordnen. ;)
Dank & Gruss, Thoralf
Hi Thoralf,
Gibt es eine Möglichkeit, .de.html serverseitig (RewriteEngine?) zu 'tauschen'?
vermutlich schon - das ist aber nicht mein Fachgebiet.
Genau das will ich wegen reiner Bequemlichkeit nicht, da mein Windows leider zu doof ist, .php.de bzw. .html.de entsprechend zuzuordnen. ;)
Ich verwende den TotalCommander zum Navigieren und öffne Textdokumente vir "F4" in TextPad. Was interessieren mich da Windows-Endungen?
Viele Grüße
Michael
Hallo Michael,
vermutlich schon - das ist aber nicht mein Fachgebiet.
Das macht nix, die Frage ging ja ans ganze Forum. ;) Und was Server-Fragen angeht, greif ich dennoch gern auf Deine Antworten zurück. ;)
Ich verwende den TotalCommander zum Navigieren und öffne Textdokumente vir "F4" in TextPad. Was interessieren mich da Windows-Endungen?
Ich nutze die Boardmittel, da zB Aufrufe aus anderen Anwendungen heraus (FTP-Client) auf die Standardwege zugreifen. ;)
Gruss, Thoralf
Nachtrag:
Das musste doch irgendwie gehen! ;)
Die Lösung ist so trivial wie logisch wie Windows-typisch.
Wenn Du mit "test.html" zwischen einer deutschen und einer englischen Version verhandeln willst, dann müssen die Endungen, welche diese Sprachen beschreiben, _hinter_ der Endung ".html", welche Du der Verhandlung explizit entzogen hast, folgen
Der Satz hat mich letztlich drauf gebracht.
Ich habe 'einfach' die Endung noch einen Tick weiter getrieben. Die Dateien heissen jetzt test.html.de.html und test.html.en.html.
http://www.thoralf-knuth.net/test.html geht.
http://www.thoralf-knuth.net/test.html.de.html geht.
http://www.thoralf-knuth.net/test.html.en.html geht.
http://www.thoralf-knuth.net/test geht.
http://www.thoralf-knuth.net/test/ geht nicht.
Die Dateien heis
Gruss, Thoralf