Serving XHTML as application/xhtml+xml for XHTML aware browsers, text/html for others

XHTML is a great way forward to avoid the infamous tag soup that many
web sites have deployed over the time. But for this, and as described by
http://www.w3.org/TR/xhtml-media-types/#application-xhtml-xml
it ought to be served as application/xhtml+xml. But some browsers do not
recognize this mime-type, and for instance, IE proposes to download a
page served with this mime-type instead of displaying it. Here is a
solution to workaround this.

On my personal web site, I serve my XHTML 1.0 as application/xhtml+xml
for all user agents, except those that don't have this mime-type in
their Accept header AND have text/html or */* in it. For those, it is
served as text/html (which is OK, since my XHTML follows the
compatibility guidelines).

To do that, I use the following settings on Apache (very much inspired
from http://schneegans.de/tips/apache-xhtml.html): 
# All my .html files are XHTML
AddType  application/xhtml+xml html

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_ACCEPT} !application/xhtml\+xml
RewriteCond %{HTTP_ACCEPT} (text/html|\*/\*)
RewriteCond %{REQUEST_FILENAME} .*\.html
RewriteRule ^.*$ - "[T=text/html,L]"

(compared to the original version, it makes the right mime-type the
default, and the wrong one only in some very specific cases).

Among the browsers that do not recognize application/xhtml+xml, I have
tested with Netscape 4.7 on Linux and IE5.5 on Windows, and they both
displayed the pages correctly (e.g., they didn't ask to download the
page).
-- 
Dominique Hazaël-Massieux - http://www.nimbustier.net/

Received on Wednesday, 4 December 2002 07:28:36 UTC