<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.de.xsl"?>
<modulesynopsis metafile="mod_negotiation.xml.meta">
<name>mod_negotiation</name>
<description>Ermöglicht die <a
href="../content-negotiation.html">Content Negotiation</a></description>
<status>Base</status>
<sourcefile>mod_negotiation.c</sourcefile>
<identifier>negotiation_module</identifier>
<summary>
<p>Bei der Content Negotiation oder Anpassung einer Antwort an die
Bedürfnisse des Clients durch den Server wird das Dokument
ausgewählt,
das den Fähigkeiten des zugreifenden Clients am meisten entspricht,
falls
mehrere Dokumente zur Auswahl stehen. Hierfür gibt es zwei
Möglichkeiten:</p>
<ul>
<li>Eine Type-Map (eine Datei mit dem Handler
<code>type-map</code>), die die Dateien mit den unterschiedlichen
Varianten explizit aufführt.</li>
<li>Eine MultiView-Suche (aktiviert über die
<directive module="core">Option </directive>
<code>MultiViews</code>), bei der der Server nach einem
Dateinamensmuster sucht und eine Ergebnisliste zusammenstellt.</li>
</ul>
</summary>
<seealso><directive module="core">Options</directive></seealso>
<seealso><module>mod_mime</module></seealso>
<seealso><a href="../content-negotiation.html">Content
Negotiation</a></seealso>
<section id="typemaps"><title>Type-Maps</title>
<p>Das Format einer Type-Map ist mit dem Mail-Headern nach RFC822
vergleichbar. Sie enthält durch Leerzeilen getrennte
Dokumentbeschreibungen. Zeilen, die mit einem Doppelkreuz ('#') beginnen,
werden als Kommentare behandelt. Eine Dokumentbeschreibung besteht
aus mehreren Header-Datensätzen, die sich über mehrere Zeilen
fortsetzen
können. Die Fortsetzungszeilen müssen mit Leerzeichen beginnen,
die bei der
Verkettung der Zeilen entfernt werden. Ein Header-Datensatz enthält
ein Schlüsselwort und einen Wert, die durch einen Doppelpunkt
voneinander getrennt werden. Innerhalb des Header-Datensatzes
dürfen zwischen den einzelnen Elementen Leerzeichen stehen.
Zulässige
Header sind: </p>
<dl>
<dt><code>Content-Encoding:</code></dt>
<dd>Das Komprimierungsverfahren der Datei. Apache erkennt nur
Komprimierungsverfahren, die mit einer <directive
module="mod_mime">AddEncoding</directive>-Direktive definiert
wurden. Normalerweise gehören hierzu die Optionen
<code>x-compress</code> und <code>x-gzip</code>. Der
Präfix <code>x-</code> wird bei Vergleichen ignoriert.</dd>
<dt><code>Content-Language:</code></dt>
<dd>Die Sprachevariante(n) angegeben mit dem standardmäßigen
Sprache-Tag (<a href="http://www.ietf.org/rfc/rfc1766.txt"
>RFC 1766</a>). <code>en</code> steht beispielsweise für die
englische Sprache. Mehrere Sprachvarianten werden durch Kommata
voneinander getrennt.</dd>
<dt><code>Content-Length:</code></dt>
<dd>Die Dateilänge in Byte. Ist dieser Header nicht
vorhanden, wird die tatsächliche Dateilänge zugrunde
gelegt.</dd>
<dt><code>Content-Type:</code></dt>
<dd>
Der MIME-Medientyp des Dokuments, mit optionalen
Parametern. Parameter werden vom Medientyp
und anderen Parametern ein Semikolon getrennt. Die Syntax lautet
<code>Name=Wert</code>. Zu den gebräcuhlichen Parametern
gehören:
<dl>
<dt><code>level</code></dt>
<dd>Eine ganze Zahl, die die Version des Medientyps angibt.
Für <code>text/html</code> ist dies <code>2</code>, sonst
<code>0</code>.</dd>
<dt><code>qs</code></dt>
<dd>Eine Gleitkommazahl mit einem Wert zwischen <code>0.0</code>
und <code>1.0</code>, der die relative 'Qualität' der Variante
im Vergleich zu anderen verfügbaren Varianten angibt, ohne
Rücksicht auf die Möglichkeiten des Clients capabilities.
Eine
JPEG-Datei hat zum Beispiel in der Regel eine höhere
Qualität
als eine ASCII-Datei, wenn es sich um die Wiedergabe einer
Fotografie handelt. Handelt es sich hingegen um eine reine
ASCII-Darstellung, dann hat die ASCII-Datei die höhere
Priorität.
Die <code>qs</code>-Werte sind daher immer für eine bestimmte
Datei spezifisch.</dd>
</dl>
<example><title>Beispiel</title>
Content-Type: image/jpeg; qs=0.8
</example>
</dd>
<dt><code>URI:</code></dt>
<dd>Die URI der Datei mit der Variante (des angegebenen
Medientyps, verschlüsselt nach der angegebenen Inhaltskodierung).
Hierbei handelt es sich um URLs relativ zu Map-Datei (sie müssen auf
den gleichen Server (!) sowie auf Dateien verweisen, für die der
Client
Zugriffsrechte haben muss, wenn sie direkt angefordert würden.</dd>
<dt><code>Body:</code></dt>
<dd>Neu in Apache 2.0, der tatsächliche Inhalt der Ressource kann
in der Type-Map-Datei mit dem <code>Body</code>-Header
angegeben werden. Dieser Header muss eine Zeichenfolge enthalten, die
die ein Begrenzungszeichen für den Rumpfinhalt angibt. Die folgenden
Zeilen einer Type-Map-Datei werden bis zum Begrenzungszeichen
dem Ressourcenrumpf zugerechnet:
<example><title>Beispiel:</title>
Body:----xyz----<br />
<html><br />
<body><br />
<p>Content of the page.</p><br />
</body><br />
</html><br />
----xyz----
</example>
</dd>
</dl>
</section>
<section id="multiviews"><title>MultiViews</title>
<p>Eine MultiView-Suche über die <code>MultiViews</code>
<directive module="core">-Option</directive> aktiviert. Erhält
der Server eine Anfrage für <code>/some/dir/foo</code> und
ist <code>/some/dir/foo</code> <em>nicht</em> vorhanden,
dann liest der Server das Verzeichnis und sucht nach Dateien mit der
Bezeichnung <code>foo.*</code>. Auf diese Weise erzeugt ein
künstliches Type-Map mit diesen Dateien und weist ihnen die gleichen
Medientypen und Inhaltsverschlüsselungen zu, die sie hätten, wenn
der Client eine von ihnen namentlich angefordert hätte.
Anschließend
wählt er die für die Möglichkeiten des Clients geeignetste
Datei aus
und sendet das Dokument.</p>
</section>
<directivesynopsis>
<name>CacheNegotiatedDocs</name>
<description>Ermöglicht das Caching von Dateien, die über die
Content Negotiation ausgewählt wurden, durch Proxy-Server.</description>
<syntax>CacheNegotiatedDocs On|Off</syntax>
<default>CacheNegotiatedDocs Off</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
<compatibility>Die Syntax hat sich mit der Version 2.0
geändert.</compatibility>
<usage>
<p>Diese Direktive erlaubt eine Zwischenspeicherung der Ergebnisse der
Content Negotiation durch Proxy-Server. Das kann bedeuten, dass Clients,
die hinter diesen Proxys liegen, möglicherweise Versionen erhalten, die
nicht optimal ihren Fähigkeiten entsprechen, allerdings ist das Caching
effizienter.</p>
<p>Diese Direktive ist nur für Anfragen von HTTP/1.0-Browsern wirksam.
HTTP/1.1 bietet bei der Content Negotiation bessere Möglichkeiten
für die
Kontrolle des Caching. Auf Antworten auf HTTP/1.1-Anfragen hat
diese Anweisung keine Auswirkungen.</p>
<p>Vor der Version 2.0 übernahm
<directive>CacheNegotiatedDocs</directive> kein
Argument, sondern die Direktive wurde allein durch ihr
Vorhandensein aktiviert.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>ForceLanguagePriority</name>
<description>Entscheidung für den Fall, dass kein passendes Dokument
gefunden wird.</description>
<syntax>ForceLanguagePriority None|Prefer|Fallback [Prefer|Fallback]</syntax>
<default>ForceLanguagePriority Prefer</default>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
<compatibility>Verfügbar seit Version 2.0.30</compatibility>
<usage>
<p>Die <directive>ForceLanguagePriority</directive>-Direktive
verwendet die vorhandene Direktive <directive
module="mod_negotiation">LanguagePriority</directive>, um eine
Entscheidung zu treffen, wenn der Server keine Übereinstimmung für
die Anfrage finden kann.</p>
<p><code>ForceLanguagePriority Prefer</code> verwendet die
<code>LanguagePriority</code>, um ein brauchbares Ergebnis und
nicht nur den <code>Status 300 (MULTIPLE CHOICES)</code>
zurückzuliefern, wenn mehrere gleichermaßen geeignete
Sprachvarianten gefunden worden. Enthält eine
Anfrage die <code>Accept-Language</code>-Header
<code>en</code> und <code>de</code> mit jeweils der gleichen
Qualitätsangabe <code>.500</code> (gleichermaßen geeignet), dann
wird bei
den unten aufgeführten Direktiven die erste übereinstimmende
Variante
mit der Sprachangabe <code>en</code> zurückgesendet.</p>
<example>
LanguagePriority en fr de<br />
ForceLanguagePriority Prefer
</example>
<p><code>ForceLanguagePriority Fallback</code> liefert in Verbindung
mit der Direktive
<directive module="mod_negotiation">LanguagePriority</directive> ein
brauchbares Ergebnis anstatt der Antwort <code>Status 406
(NOT ACCEPTABLE)</code> zurück. Lässt die
<code>Accept-Language</code>-Anweisung der Antwort nur
<code>es</code> zu, ohne dass eine solche Variante gefunden wird,
dann liefern die unten angeführten Direktiven die erste Variante aus
der
<directive module="mod_negotiation"
>LanguagePriority</directive>-Liste zurück.</p>
<example>
LanguagePriority en fr de<br />
ForceLanguagePriority Fallback
</example>
<p>Es kann sowohl die Option <code>Prefer</code> als auch die Option
<code>Fallback</code> angegeben werden, so dass entweder die erste
übereinstimmende Variante für <directive
module="mod_negotiation">LanguagePriority</directive> zurückgeliefert
wird, wenn mehr als eine Variante akzeptabel ist, oder das erste
verfügbare Dokument gesendet wird, wenn keine der Varianten in der
Liste der vom Client akzeptierten Sprachen enthalten ist.</p>
</usage>
<seealso><directive module="mod_mime">AddLanguage</directive></seealso>
</directivesynopsis>
<directivesynopsis>
<name>LanguagePriority</name>
<description>Auszuwählende Sprachevariante falls der Client keine
bevorzugte Sprache angibt.</description>
<syntax>LanguagePriority <var>MIME-lang</var> [<var>MIME-lang</var>]
...</syntax>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
<usage>
<p>Die <directive>LanguagePriority</directive>-Direktive legt fest,
welche der Sprachevarianten bei MultiView-Anfragen vorzuziehen ist,
falls der Client keine Angabe zur bevorzugten Sprache macht. Die
<var>MIME-lang</var>-Liste führt die Prioritäten in absteigender
Reihenfolge auf.</p>
<example><title>Beispiel:</title>
LanguagePriority en fr de
</example>
<p>Existieren die Varianten <code>foo.html.fr</code> und
<code>foo.html.de</code> und macht der Browser keine Angabe
zur bevorzugten Sprache, dann wird bei der Anfrage nach
<code>foo.html</code> die Variante <code>foo.html.fr</code>
geliefert.</p>
<p>Diese Direktive ist nur wirksam, wenn die geeignetste Sprache
nicht anders ermittelt werden kann oder wenn die <directive
module="mod_negotiation">ForceLanguagePriority</directive>-Direktive
auf <code>None</code> gesetzt wurde. Bei korrekt ausgeführten
HTTP/1.1-Anfragen hazt diese Direktive ebenfalls keine Auswirkungen.</p>
</usage>
<seealso><directive module="mod_mime">AddLanguage</directive></seealso>
</directivesynopsis>
</modulesynopsis>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]