Je více možností, jak kódovací kontext udržovat, ale zdá se nám, že použití prefixů má nejvíce výhod (a nejmenší nevýhody):
Ale i postfixy mají stále svůj význam, proto je mod_czech podporuje i nadále. Jak jinak byste změnili kódování v relativních odkazech?
CacheEncodedDocs
(analogií direktivy CacheNegotiatedDocs
modulu mod_negotiation).K těmto informacím nicméně ještě poznámka. Jestliže bude dokument vyžádaný
protokolem HTTP/1.0 uložen do cache (při CacheEncodedDocs On
), získají
tuto cacheovanou verzi i klienti komunikující protokolem HTTP/1.1, a to i když bude
kódována ve špatné znakové sadě!
Jinak řečeno: Nové prohlížeče komunikující protokolem HTTP/1.1 (MSIE 4.0, Netscape
4.0, ...) by neměly s cacheováním problémy, kdyby neexistovaly prohlížeče starší,
kterých je však stále většina.
README
v adresáři charconv
v distribuci modulu. Nakonec, jak toho dosáhnout: Jestliže vás od toho kroku výčet
nevýhod neodradil, použijte direktivy GuessCharset Off
a
FallbackCharset chcp
k zákazu autodetekce znakové sady, a
direktivu
SetEnv ignore_charset "iso-8859-1,iso-8859-2,windows-1250,x-mac-ce,utf-8,..."
použijte pro HTTP/1.1 klienty, kteří v HTTP hlavičce posílají položku Accept-Charset
(v uvozovkách uveďte názvy všech modulem podporovaných znakových sad, oddělené
čárkami).
HostNameLookups on
, můžete v srm.conf
nastavit (pro Českou republiku a Slovensko):
RewriteCond %{REMOTE_HOST} !.(cz|sk)$
RewriteRule !^/(asc|iso|win|mac|kam|lat|uni|chcp)/ - [C]
RewriteRule ^/(.*) /chcp/$1
Není to vyzkoušené. Nezapomeňte však, že někteří klienti mají pouze IP, nikoli síťové jméno. (Zajímalo by mne, zda to bude fungovat dostatečně uspokojivě! Máte-li lepší řešení, sem s ním!)
http://mujserver/cesta/dokument.html
byl v prohlížečích zobrazován bez háčků a čárek, tj. v US-ASCII. Máte několik
možností, jak to zařídit:asc
stejně, jako by to udělal server při explicitní volbě kódování na stránce pro
změnu kódování:
http://mujserver/asc/cesta/dokument.html
, nebo
http:/asc/cesta/dokument.html
, nebo jen.
/asc/cesta/dokument.html
http://mujserver/cesta/
využijete výše zmíněných postfixů:
dokument.html.CASCII
Server pak po kliknutí na odkaz přesměruje žádost na absolutní URL s odpovídajícím kódovacím prefixem.
Názvy postfixů, které máte k dispozici, závisí na konfiguraci vašeho serveru. Nové postfixy můžete definovat direktivou AddPostfix.
asc
použijte absolutní odkaz s prefixem chcp
:
/chcp/cesta/dokument.html
noconv
, např.
http://www.server.cz/noconv/cesta/dokument.html
SourceCharset no-code
.CzechModule Off
. Direktivou <Files>
vyberte soubory, na které se má direktiva
CzechModule Off
vztahovat.<!--mycharset=xxx-->
?<!--mycharset=xxx-->
obejít. Představte si
následující situaci:V adresáři máte stovky souborů následujících čtyř druhů: hlavní soubory, do kterých server prostřednictvím SSI vkládá z jiných souborů hlavičku, vlastní tělo a patu dokumentu. Těla dokumentů jsou ale psána v různých kódováních, což jste dosud vyznačoval(a) právě zmíněnou SaCzechovskou direktivou.
Jak se bez této direktivy obejít?
Jedno z možných řešení je následující:
Zkuste v názvech souborů najít nějaký vzor, který by byl pro těla v každém z použitých
kódování společný. V konfiguračním souboru pro každý z těchto vzorů nastavte (např.):
<Location ~ "/ab*$">
SourceCharset CP852
</Location>
Další (samozřejmou) možností je umístit soubory v různých kódováních do různých
adresářů. (Jestliže máte momentálně všechny soubory v jednom společném adresáři,
můžete k jejich rozdělení podle kódování využít např. grep
, příp.
upravit v hlavních souborech cesty pomocí sed
.) V každém adresáři
pak nastavte vhodné kódování direktivou SourceCharset
.
Není-li souborů v jiném kódování mnoho, můžete zapnout multiviews (Option
+Multiviews
) a těmto výjimečným souborům přidat extenzi vyjadřující příslušné
kódování.