This module is contained in the mod_xhtml_neg.c
file. It provides content negotiation facilities for XHTML
documents.
This module provides content negotiation facilities for XHTML documents that conform to Appendix C compatibility requirements of the XHTML 1.0 specification. This allows compatible browsers to view XHTML content as XML-compliant documents, and older or less compatible clients to view XHTML content as text/html documents.
This directive enables or disables content negotiation
for the document realm in question.
(That is, if found in an .htaccess
file, for
instance, it applies only to documents generated from that
directory.) If set to Off
, no
negotiation will be performed for any document
in the realm (unless overridden at a lower level, such as an
.htaccess
file overriding a server config file).
If set to On
, the header will be added to
served documents according to the criteria defined by the XhtmlNegTypes and XhtmlNegStarsIgnore directives.
Note that this directive does not guarantee that content negotiation will be performed. If the criteria aren't met, no negotiation will be performed, and the effect will be as though this directive wasn't even specified.
The XhtmlNegLog
directive defines the path
and filename of an optional log file. Status messages regarding
success or failure to negotiate are sent to this log file. If
this directive is not specified, no logging takes place.
For example:
XhtmlNegLog /var/log/apache/mod_xhtml_neg.log
The XhtmlNegTypes
directive defines the
content-negotiation for a given file extension. Each token contains
a content-type, followed by optional charset value, relative quality,
and profile information.
For example:
XhtmlNegTypes .html application/xhtml+xml;charset=iso-8859-1 \ application/xml;q=0.5 text/html;charset=iso-8859-1;q=0.8 \ text/xml;charset=iso-8859-1;q=0.2
This tells us that the content-type application/xhtml+xml is preferred, followed by text/html, application/xml, and finally text/xml.
AddDefaultCharset
directive. If this is not
specified, "iso-8859-1" is assumed unless the content type is "text/xml"
or "text/xml-external-parsed-entity", where "us-ascii" is assumed.If no match is found using content-negotiation, the default content type is used.
Note that setting the AddDefaultCharset
directive for the
Apache core is recommended regardless of whether the "charset" parameter
is specified.
The XhtmlNegStarsIgnore
directive indicates the
number of stars ("*") in an Accept token that should be ignored
when performing content-negotiation. This is used to get around
bugs in certain user agents that send Accept headers of "*/*"
in every request without assigning them a lower quality value.
For example:
XhtmlNegStarsIgnore 2
Here, Accept headers such as "text/html" or "text/*" will be considered when performing content-negotiation, but "*/*" will be ignored.
Setting XhtmlNegStarsIgnore 0
is effectively the same
as disabling content-negotiation altogether. XhtmlNegStarsIgnore
3
allows all Accept headers to be used for content-negotiation.
The XhtmlNegCache
directive controls caching of
negotiated content when the request is sent using HTTP 1.0. By
default, caching is disabled due to problems with HTTP 1.0 proxies
being unable to reliably give user agents the correct content-type.
For HTTP 1.1 (and later) this directive has no effect, since HTTP 1.1 gives proxies the information they need in order to send correctly negotiated content to user-agents.
Back home.