Apache - kodova stranka

Jan Houstek jan.houstek na mff.cuni.cz
Pondělí Leden 3 12:10:25 CET 2005


On Mon, 3 Jan 2005, Peter Cernoch wrote:

Dobre, takze postodesate to same. Je opravdu tolik pracne precist si
standardy, dokumentaci k apache serveru, a aplikovat na ne mozek?

> Takze tomu mam rozumet ze prednostne se bere nastaveni serveru a jen
> kdyz toto neni dostupne tak se vezme v uvahu element z dokumentu ktery
> posilam?

*Klient* dava (tedy dle normy by mel) prednost tomu, co dostane v http
hlavickach. Pokud v nich informace o kodovani chybi, pouzije informaci z
meta http-equiv. Pokud i ta chybi, pouzije nejake v nem nakonfigurovane
vychozi kodovani, pripadne se ho muze pokusit nejak uhodnout.

> Ale myslel jsem ze server jen slepe posila co se po nem zada a na nejake
> zpracovani dokumentu je potreba skriptovat atd.

Ano. Presne tohle *apache* dela, tj. bez ucasti inteligentnich modulu
posila obsah souboru beze zmen a v hlavickach to, co ma nakonfigurovano
(bez ohledu na obsah dokumentu). Coz je presne duvod, proc se to zde kazdy
mesic nekolikrat resi, kdyz je totiz z nejakeho duvodu v defaultni
konfiguraci napr. AddDefaultCharset iso-8859-1, jinak kodovane stranky se
zobrazuji spatne.

> > textových typů přidával daný charset. Apache nezkoumá (pomineme-li
> > moduly typu mod_czech nebo mod_mime_magic) obsah toho, co posílá.
>
> Prominte, ale myslim ze tato cast neguje predchozi. Jestli obsah
> nezkouma, tak nemuze rozlisovat jestli poslat sve nastavene http-equiv
> (a v mem pripade tedy i nahradit to puvodni v odesilanem souboru) nebo
> -- kdyz toto standartni neni zadano v konfiguraci -- pouzit to z
> dokumentu.

Presne tak, on to nerozlisuje. Bud ma v konfiguraci AddDefaultCharset no
a pak v hlavickach posila jen MIME typ (bez udaneho kodovani), nebo tam ma
nejaky charset a ten posle.

V praxi se to resi nekolika zpusoby

* pouziti jednotneho kodovani, ktere ma apache v globalni konfiguraci
* nastaveni kodovani pro jednotlive ruzne kodovane kusy webu pomoci .htaccess
* priprava kyzenych hlavicek pomoci PHP, CGI ci jineho skriptu
* AddDefaultCharset no a spolehani na meta http-equiv
* inteligentni moduly typu mod_czech

Asi nejvice lze v soucasne dobe doporucit prvni moznost s tim, ze se vsude
bude pouzivat UTF-8.

-- Honza Houstek


Další informace o konferenci Linux