SUMA_SEO hat geschrieben:Was ist "content negotiation".
Webbrowser schicken mit jeder Anfrage ein paar Infos bezüglich dessen, womit sie bzw. ihr Herr und Meister etwas anfangen kann, mit. Das sieht dann zum Beispiel so aus:
GET / HTTP/1.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding : gzip,deflate
Accept-Charset: windows-1252,utf-8;q=0.7,*;q=0.7
Host: example.com
Aus den Angaben, die unter Accept… erscheinen, kann der Webserver die passendste Variante des angeforderten Inhalts auswählen (sofern er denn eine Wahl hat).
Am häufigsten kommt das vermutlich bei Accept-Encoding vor; meldet der Browser, er könne auch komprimierte Daten verarbeiten, komprimiert der Webserver das angefragte Objekt vor der Übermittlung. Für den Browsernutzer wie auch für den Serverbetreiber passiert das transparent, d.h. sie müssen nichts weiter dazu tun und bekommen davon auch nichts mit außer vielleicht, dass 100 KByte HTML-Code dank Kompression wie 10 KByte durch die Leitung schießen. Auf dem Server liegen trotzdem die 100 KByte im Original und im Webbrowser werden diese 100 KByte auch im Original angezeigt.
Eine andere Variante ist das Ausliefern von Übersetzungen. Unter derselben URL wird automatisch jeweils die Sprache ausgeliefert, die der Benutzer laut seiner Browsereinstellung bevorzugt. Ruft ein Deutscher / auf, bekommt er die deutsche Startseite, ruft ein Engländer / auf, bekommt er die Startseite auf Englisch - ohne weiteres Zutun, unter derselben URL.
Ich habe gerade gestern dazu
etwas geschrieben.
Dieses Aushandeln des Inhalts zwischen Browser und Server läuft unter dem Begriff
content negotiation.
Du könntest dir diese Funktion zu Nutze machen -wenn auch nicht im Sinne des Erfinders-, indem du in /.htaccess die Zeile
Options +multiviews einträgst, damit mod_negotiation einschaltest und fortan alle Seiten nur noch unter /seite statt des tatsächlichen Namens /seite.html ansprichst.
Da /seite nicht exitiert, würde mod_negotiation sich auf die Suche nach Dateien machen, die mit /seite beginnen, /seite.html finden und als /seite ausliefern. Et voilà, du hättest deine URLs ohne Dateiendung.
(Der Normalfall wäre, dass mod_negotiation zum Beispiel /seite.html.de und /seite.html.en findet und dann, je nach Besucher, den deutschen (.de) oder den englischen (.en) Inhalt als /seite ausliefert. Aber es geht halt auch, wenn man nur eine „Wahlmöglichkeit“ anbietet.)
Das mag für dich auf den ersten Blick praktischer sein, weil du nur die Dateien anlegen musst, aber nicht noch einzelne Verzeichnisse dazu. Das Problem ist nur, dass der Server dann bei jedem Aufruf erst einmal das gesamte Verzeichnis nach passenden Dateinamen durchsuchen muss. Bei ein paar Dutzend Dateien pro Verzeichnis ist das vertretbar, bei 1000 Stück wäre mir unwohl.
Legst du stattdessen /seite/index.html an, stellt sich das Problem nicht oder zumindest nicht in der Schärfe.