Zamotanie sa v rewritingu

Izsak's Website Suite prechádaza na LucidCMS systém a prechod si vyžiadal ďalšie komplikácie. Ako som písal, nastal veľký, krátky výpadok www.izsak.net. Teraz som objavil chybu, ktorá spôsobovala, že Apache poslal pre MSIE zdrojový kód PHP súboru!

Ako hlavný indexový súbor som mal nastavený index.xht s MIME typom application/xhtml+xml. Pre prehliadače nepodporujúce tento MIME typ bola hlavička upravená na text/html.

DirectoryIndex index.xht index.php index.htm

AddType 'application/xhtml+xml; charset=utf-8' .xht

RewriteEngine On

RewriteCond %{HTTP_ACCEPT} !application/xhtml\+xml
RewriteRule \.xht$ - [T=text/html;charset=utf-8]

Všetko fungovalo správne. Pokým som nenasadil LucidCMD systém a nechcel som prepisovať URL na adresu index.php?url=cesta&r=1. V tom čase nastal prvý výpadok, pretože som si nechal nastaviť zlé RewriteRules.

Technická podpora Českého Hotingu mi ochotne nastavila pravidlá tak, aby sa nebilo prepisovanie URL pre www.izsak.net a pre www.izsak.net/weblog.

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d
RewriteRule ^/([^/]*)$ - [L,S=1]

RewriteRule ^/([^/]*)$ /index.php?url=$1&r=1 [L]

Pri zadaní adresy www.izsak.net však Apache presmeroval interne URl na www.izsak.net/index.php?url=index.xht&r=1. Toto chovanie sa mi zdá dosť podivné, počítal som s tým, že parameter url= bude prázdy a nie index.xht.

Objevil som však záhadnú chybu v MSIE: Apache posielal zdrojový kód index.php súboru. Iba tohoto, žiadnych iných našťastie. Po zadaní priamej adresy www.izsak.net/index.php sa však zobrazila správna stránka.

Skúsil som teda použiť nástroj Fiddler Tool na prezretie hlavičiek, ktoré posiela MSIE na server a ich prípadné upravenie. Potom, čo som pridal do hlavičiek

Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5`

(cez Request Builder), server vrátil stránku a nie zdrojový kód. Objavil som teda chybu – prepisanie MIME typu pre .xht súbory.

Rýchlym riešením je odstránenie všetkých pravidiel pre .xht súbory (hlavne RewriteRule). Na iné riešenie som teraz neprišiel (a asi ani neprídem, pretože do rewrite pravidiel sa príliš nevyznám).

Ešte raz samusím poďakovať technickej podpore Českého hostingu za promptné a ochotné riešenie problému.