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>
