Apache Multiviews

- webserver
@@alle:
Ich habe eine Seite in drei Sprachversionen: 'onring.art.html', 'onring.de.html' und 'onring.en.html'
Options +MultiViews
ist gesetzt, Sprachvereinbarung funktioniert bestens:
http://bittersmann.de/tests/20080417-onering/no-addLanguage/onering
Auch lassen sich die Ressourcen sprachspezifisch aufrufen – auch ohne Endung '.html':
http://bittersmann.de/tests/20080417-onering/no-addLanguage/onering.art
http://bittersmann.de/tests/20080417-onering/no-addLanguage/onering.de
http://bittersmann.de/tests/20080417-onering/no-addLanguage/onering.en
Trage ich nun in .htaccess die Sprachen explizit ein
AddLanguage art .art
AddLanguage de .de
AddLanguage en .en
dann funktioniert der generische URI immer noch:
http://bittersmann.de/tests/20080417-onering/addLanguage/onering
Allerdings gehen die URIs ohne Endung '.html' nur noch für die Sprachen, die der Browser in der Liste der bevorzugten Sprachen hat, also im 'Accept-Language'-Header angibt:
http://bittersmann.de/tests/20080417-onering/addLanguage/onering.art
http://bittersmann.de/tests/20080417-onering/addLanguage/onering.de
http://bittersmann.de/tests/20080417-onering/addLanguage/onering.en
Ansonsten gibt es einen Fehler 406 Not Acceptable. Warum ist das so?
Live long and prosper,
Gunnar
Hallo Gunnar,
Ansonsten gibt es einen Fehler 406 Not Acceptable. Warum ist das so?
Das liegt an der Arbeitsweise von mod_negotiation / mod_mime (die ist eh ziemlich kompliziert, ich mag MultiViews deswegen nicht).
Du kannst Dir mal die Dokumentation zu MultiViewsMatch ansehen, ich würde meinen, dass ein »MultiviewsMatch Any« das macht, was Du willst (ist aber ungetestet), allerdings hat das auch Nebenwirkungen (siehe Doku).
Viele Grüße,
Christian
@@Christian Seiler:
Du kannst Dir mal die Dokumentation zu MultiViewsMatch ansehen, […]
Fällt bei mir aus wegen "Available in Apache 2.0.26 and later."
Was ich nicht verstehe: in der Konfiguration des Servers (httpd.conf) sollten doch schon 'de' und 'en' als Sprachen voreingetragen sein (oder nicht?). Was ändert’s, wenn ich das in .htaccess selbst tue?
Live long and prosper,
Gunnar
Hallo Gunnar,
Du kannst Dir mal die Dokumentation zu MultiViewsMatch ansehen, […]
Fällt bei mir aus wegen "Available in Apache 2.0.26 and later."
Du verwendest einen Apache vor 2.0.26? Ist das noch ein Apache 1.3 oder was? Wenn's ein 2.0er ist würde ich dringend aktualisieren - von wegen Sicherheit und so.
Was ich nicht verstehe: in der Konfiguration des Servers (httpd.conf) sollten doch schon 'de' und 'en' als Sprachen voreingetragen sein (oder nicht?). Was ändert’s, wenn ich das in .htaccess selbst tue?
Gar nichts, weil Dein Browser de / en als mögliche Sprachen mitsendet. Ich habe z.B. kein 'de' in der Sprachliste meines Browsers (frag mich jetzt bitte nicht warum ich das mal so eingestellt hatte...) und bekomme auch bei 'onering.de' ein "Not Acceptable".
Hmm... Und jetzt bin ich total verwirrt... Ich hab's gerade lokal bei mir getestet und MultiViewsMatch Any funktioniert schonmal nicht - aber die 'onering.de' liefert mir die Seite aus obwohl ich kein 'de' eingestellt habe - bei Deinem Server im Internet liefert er bei nichteingestelltem 'de' auch ein 406 aus...
Und außerdem habe ich lokal bei mir gerade noch etwas mehr herumgespielt und bin nur noch verwirrter, was das angeht...
Ich weiß, warum ich mod_negotiation nicht mag. Sorry, dass ich Dir da nicht helfen kann.
Viele Grüße,
Christian