Přesměrování

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.

Připomínky a postřehy

Máte-li nějakou připomínku, dobrý nápad nebo jste našli v dokumentaci chybu, rádi od vás uslyšíme.