Edgar Ehritt: Apache Umgang mit negotiation von X?HTML-Dokumenten

Beitrag lesen

Davon ausgehend, dass zwei resourcen der Form xy.html und xy.xhtml vorliegen und mit http://abc.jk/xy abgerufen werden, schöpft folgende Konfiguration alle Möglichkeiten aus, um multiple Darbietung zu gewährleisten:

  
<IfModule negotiation_module>  
   Options +MultiViews  
</IfModule>  
<IfModule !negotiation_module>  
   <IfModule rewrite_module>  
       RewriteEngine On  
       RewriteCond   %{SCRIPT_FILENAME} !-f  
       RewriteCond   %{HTTP_ACCEPT}     !.*application/xhtml\+xml.* [NC]  
       RewriteRule   ^(.*)$             $1.html                     [L]  
  
       RewriteCond   %{SCRIPT_FILENAME} !-f  
       RewriteRule   ^(.*)$             $1.xhtml                    [L]  
   </IfModule>  
</IfModule>  

~~~###########################################  
  
Für die Faulen (alias "die Cleveren"), die keine zwei Formatversionen haben und die Eigenschaft, dass Versionen einer nicht weiter nennenswerten Saftware (IE) mit application/xml+xhtml nicht zurande kommen, gibt es noch ein quick an dirty, zu dem anzumerken bleibt, dass hier keine entsprechenden Header einer negotiation gesetzt werden. Desweiteren wird keine Rücksicht auf die äußerst unwahrscheinliche Gegebenheit genommen, dass der client application/xhtml\+xml;q=0.0 angibt. Dies ist aber bei den üblichen Browsern und dessen Headern mir noch nicht untergekommen:  
  
~~~apache
  
<IfModule rewrite_module>  
    RewriteEngine On  
    RewriteCond   %{SCRIPT_FILENAME} !-f  
    RewriteCond   %{HTTP_ACCEPT}     !.*application/xhtml\+xml.* [NC]  
    RewriteRule   ^(.*)$             $1.xhtml                    [T=text/html,L]  
  
    RewriteCond   %{SCRIPT_FILENAME} !-f  
    RewriteRule   ^(.*)$             $1.xhtml                    [L]  
</IfModule>  

~~~###########################################  
  
Als gesamte Grundkonfiguration - brauchbar für jedes web:  
  
~~~apache
  
### core ###  
AddDefaultCharset iso-8859-1  
  
### module ###  
<IfModule negotiation_module>  
   Options +MultiViews  
</IfModule>  
<IfModule !negotiation_module>  
   <IfModule rewrite_module>  
       RewriteEngine On  
       RewriteCond   %{SCRIPT_FILENAME} !-f  
       RewriteCond   %{HTTP_ACCEPT}     !.*application/xhtml\+xml.* [NC]  
       RewriteRule   ^(.*)$             $1.html                     [L]  
  
       RewriteCond   %{SCRIPT_FILENAME} !-f  
       RewriteRule   ^(.*)$             $1.xhtml                    [L]  
   </IfModule>  
</IfModule>  
<IfModule mod_mime>  
   # falls der MIME-Type nicht erkannt wird, Kommentar  
   # "#" bitte von der nächsten Zeile entfernen:  
   # AddType application/xhtml+xml .xhtml  
  
   AddCharset iso-8859-1 .css  
   AddCharset iso-8859-1 .js  
   AddCharset iso-8859-1 .xhtml  
</IfModule>  

~~~###########################################  
  
  
Gruß aus Berlin!  
eddi