Už ne doménový alias, ale redirect pomocí IIS Url Rewrite

Sice mi to chvilku trvalo, než jsem si zopakoval regexy ale rozhodně to stálo za to. Jde o to, že jsem měl na začátku jen 1 doménu – sunamo.cz. Tu mi tehdy koupil ještě někdo jiný, který pak se mnou přerušil kontakt, takže jsem tu doménu nechal vypršet a pak si ji koupil sám.

Mezitím jsem si ještě koupil sunamo.cz. V ASPOne mi řekli, že by byl pro mě nejlepší doménový alias – tedy v prohlížeči bude www.sunamo.cz ale zobrazí se obsah z www.sunamo.cz. Jediné co jsem musel duplikovat tak byly uživatelské cookies a to hned 4x – pro sunamo.cz, sunamo.cz, www.sunamo.cz a www.sunamo.cz. 🍪

Pak mi ale Google Analytics začal hlásit, že mu přicházejí přístupy z jiné domény než která byla zadána při vytvoření účtu. Dobré, řekl jsem si, jednu doménu zruším a budu ji přesměrovávat. Ale kterou – prvně to vypadalo na sunamo.cz, hlavně proto že zkracovač zkracoval adresy na doménu sunamo.cz.

Pak jsem si ale řekl že bych dělal zbytečné problémy sobě i ASPOne, kdybych musel všechny reference na sunamo.cz přejmenovat na .net a že to ještě zkusím udělat pomocí URL Rewrite a všechny požadavky ze sunamo.cz přesměrovat na sunamo.cz. Nakonec jsem nalezl fungující řešení toto:

XML
<system.webServer>
    <rewrite>
        <rules>
            <clear></clear>
            <rule name="Redirect to www" enabled="true" stopProcessing="true">
                <match url="(.*)"></match>
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTP_HOST}" pattern="^sunamo.cz$"></add>
                </conditions>
                <action type="Redirect" url="https://sunamo.cz/{R:1}" redirectType="Permanent"></action>
            </rule>
            <rule name="Rewrite rule1 for net" stopProcessing="true">
                <match url="((.*)?)$" negate="false"></match>
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTP_HOST}" pattern="(.*.net)$"></add>
                </conditions>
                <action type="Redirect" url="https://sunamo.cz/{R:0}" appendQueryString="true"></action>
            </rule>
            <rule name="Redirect from www net" enabled="true" stopProcessing="true">
                <match url="(.*)$"></match>
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{URL}" pattern="http://www(.*)net/?q=(.*)"></add>
                </conditions>
                <action type="Redirect" url="http://www.sunamo.cz/?q={C:2}" appendQueryString="true" redirectType="Permanent"></action>
            </rule>
        </rules>
    </rewrite>
</system.webServer>

První pravidlo přesměrovává na verzi s www. z bez www. pro stránky domény sunamo.cz. Druhé pravidlo pak přesměrovává všechny požadavky na .net doménu na www.sunamo.cz. Toto jsem zvládl ještě v pohodě, až na posledním místě je redirect, který přesměrovává z hlavní stránky, pokud obsahuje parametr q, na sunamo.cz.

Teď mě napadlo že tohle je zbytečné – stačilo by zrušit tu podmínku, o které ani nevím že ji tam mám, k účelu aby šli otevírat zkrácené odkazy pouze se sunamo.cz. Teď už to ale nemusím. Ale problém s Google Analytics, zdvojeným indexem googlu a spoustou jiného vyřešen – ať už to je ashx, html, aspx či cokoliv jiného a bude to na sunamo.cz, vždy se to ještě předtím než se stránka začne načítat/vykonávat přesměruje. ✅

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *