Pokud web reaguje na více doménových jmen, JellyPot umí vyřešit vzájemné přesměrování mezi těmito doménami. Současně lze také vyřešit výběr správné jazykové mutace nebo landing page pro každou doménu.
Přesměrování se definuje pomocí atributů elementu Domain
v souboru Runtime.config
. Všechna přesměrování se realizují pomocí HTTP response se stavovým kódem 301 - Moved Permanently.
Ať už přesměrování vede na libovolnou stránku, je vždy potřeba, aby existoval soubor default.aspx
(název se může lišit podle nastavení IIS) v kořenovém adresáři stránek, a to klidně i prázdný bez obsahu. IIS by v opačném případě mohlo namísto přesměrování uživatele vypsat chybu.
Jednoduché přesměrování na landing page
Landing page je stránka, která se zobrazí, když návštěvník webu zadá do adresního řádku pouze název domény. Landing page se zapisuje do atributu defaultPath
elementu Domain. Má-li být návštěvník po zadání adresy www.example.com
přesměrován na adresu www.example.com/en/default.aspx
, lze toho dosáhnout následujícím kódem:
<Domains> <Domain server="www.example.com" defaultPath="/en/default.aspx" /> </Domains>
Provoz webu na více doménách
Pokud slouží jedna doména jako primární a ostatní se na ni přesměrovávají, vypadá nastavení v Runtime.config takto:
<Domains> <Domain host="www.example.com" defaultPath="/en/default.aspx" /> <Domain host="www.example-example.com" redirectTo="www.example.com" /> </Domains>
Návštěvníci, kteří přijdou na www.example-example.com
jsou přesměrováni na primární doménu www.example.com
. Stejný způsob se používá i pro přesměrování adres bez počátečního www
na adresy s www
na začátku. Všechna URL z example.com
se na www.example.com
přesměrují takto:
<Domains> <Domain host="www.example.com" defaultPath="/en/default.aspx" /> <Domain host="example.com" redirectTo="www.example.com" /> </Domains>
Toto přesměrování funguje pro všechna URL na doméně, tedy požadavek např. example.com/any-page.aspx
bude přesměrována na www.example.com/any-page.aspx
.
V XML verzi lze místo jména domény použít i hvězdičku *
, která zastupuje všechny ostatní domény, které nejsou explicitně uvedeny. Přesměrování všech požadavků bez ohledu na doménu lze tedy zapsat takto:
<Domains> <Domain host="www.example.com" defaultPath="/en/default.aspx" /> <Domain host="*" redirectTo="www.example.com" /> </Domains>
Provoz webu na zabezpečené komunikaci (https)
Pokud má web běžet primárně pod https protokolem a ostatní požadavky se mají na tento protokol přesměrovat, použije se atribut useSsl
takto:
<Domains> <Domain host="www.example.com" defaultPath="/en/default.aspx" useSsl="true" /> <Domain host="www.example-example.com" redirectTo="www.example.com" /> </Domains>
V uvedeném příkladu jsou všechny http i https požadavky na obě domény přesměrovány na https protokol v doméně www.example.com. Z důvodu bezpečnosti jsou přesměrovávány pouze požadavky učiněné metodou GET.
Jazykové mutace webu
Pro přesměrování národních domén na patřičnou jazykovou mutaci na společné primární doméně použijeme toto nastavení:
<Domains> <Domain host="www.example.com" /> <Domain host="www.example.cz" redirectTo="www.example.com" defaultPath="/cs/default.aspx" /> <Domain host="www.example.de" redirectTo="www.example.com" defaultPath="/de/default.aspx" /> </Domains>
Takto budou např. požadavky example.cz
přesměrován na www.example.com/cs/default.aspx
.
Přesměrování podle jazyka prohlížeče
JellyPot umí přesměrovat uživatele na jazykovou mutaci odpovídající jazyku preferovaného prohlížečem (ten preferované jazyky uvádí v HTTP záhlaví Accept-Language
). Toto chování aktivujeme uvedením atributu varyByLanguage
elementu Domain
. Atribut je potřeba uvést u všech domén, které se takto mají chovat, jeho uvedení jen u výchozí domény nestačí.
<Domains> <Domain host="www.example.org" varyByLanguage="true" /> <Domain host="www.example.cz" redirectTo="www.example.org" varyByLanguage="true" /> <Domain host="www.example.com" redirectTo="www.example.org" varyByLanguage="true" /> </Domains>
Pokud potřebujeme určení jazykových mutací na základě preferovaného jazyka prohlížeče dále upřesnit, můžeme použít atribut relatedLangs
elementu Language v souboru site.config. Pokud například chceme, aby se prohlížečům preferujícím slovenštinu a polštinu zobrazovala česká mutace webu, upravíme v site.config element Language takto:
<Language name="cs" relatedLangs="sk, pl" />
Přesměrování podle jazyka prohlížeče je založeno na předpokladu, že atributy name
jednotlivých jazyků v Languages odpovídají jejich mezinárodnímu ISO kódu. Pokud žádná z jazykových mutací neodpovídá preferovanému jazyku podle hlavičky Accept-Language
, je uživatel nasměrován na jazyk uvedený v atributu defaultPath
nebo na výchozí jazykovou mutaci.