IIS7 aldomain átirányítás

Az aldomainek (subdomain) leggyakrabban két átirányítási formája létezik: a redirect és a rewrite. Hagyományosan az átirányítás, azaz a rewrite csak annyit tesz, hogy egy 301-es üzenettel egy másik címre “dobja” a böngészőnket, így a böngészőbe írt url is megváltozik. A rewrite, vagyis az “átírás” ezzel szemben elfedi a kiszolgálás helyét. Lássunk két példát és IIS rule kódjaikat:

A böngészőbe ezt írjuk: http://valami.vargapeter.com/index.html
A kiszolgálás valós helye mindkét esetben:  http://vargapeter.com/valami/index.html.

Redirect

Eredmény:  http://domain.hu/valami/index.html

<rule name="aldomain" stopProcessing="true">
     <match url="^(.*)$" ignoreCase="false" />
     <conditions logicalGrouping="MatchAny">
           <add input="{HTTP_HOST}" pattern="^valami.vargapeter.com" />
     </conditions>
     <action type="Redirect" url="http://www.vargapeter.com/valami" redirectType="Permanent" />
</rule>

Rewrite

Eredmény: http://valami.domain.hu/index.html

<rule name="aldomain" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{HTTP_HOST}" pattern="^valami.vargapeter.com(.*)" />
    </conditions>
    <action type="Rewrite" url="valami/{R:1}" />
</rule>

Fontos, hogy az aldomainek minden esetben konfigurálva legyenek a DNS szervereken és az IIS-ben pedig a webhely (Site) kötéseihez -utálom ezt a szót- (bindings) hozzá legyenek adva.

A Rewrite talán érdekesebb picit, ezért még egy kis regexpel tarkított kódrészletet is bemutatnék, amivel praktikusan kezelhetjük aldomainjeink átirányítását. A szabály lényege, hogy a valami.vargapeter.com domaint a wwwroot/_sub/valami könyvtárra irányítja. Így nem kell öt szabályt létrehoznunk, ha öt domainünk van és külön-külön megadni a valós kiszolgálási helyüket, hanem “rendszerezve” a _sub mappában az aldomain első tagjával megegyező nevű mappa lesz a subwwwroot-juk.

<rule name="SubDomain" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{HTTP_HOST}" pattern="^(.+).vargapeter.com(.*)" />
    </conditions>
    <action type="Rewrite" url="_sub/{C:1}/{R:1}" />
</rule>

Leave a Reply