Comment puis-je procéder pour mapper un alias de domaine, par ex. domainAlias.co.za
, vers un dossier virtuel sous, par ex. mainDomain.co.za
, de sorte que toutes les demandes à domainAlias.co.za
soient réellement servies par mainDomain.co.za/domainAlias
?Alias de domaine de carte vers dossier virtuel dans IIS6
Répondre
Je ne l'ai pas utilisé, mais IIS a une URL Rewrite Module qui peut import Apache mod_rewrite rules. Il y a aussi un document qui compare IIS URL Rewriting and ASP.NET routing. Avec quelques recherches, vous devriez être en mesure de faire fonctionner cela.
Vous pouvez utiliser le routage.
System.Web.Routing
Une réécriture d'URL telle que IIRF vous permet de le faire.
Les règles seraient:
RewriteCond %{HTTP_HOST} ^(?!mainDomain)([^\.]+)\.co\.za$
RewriteRule ^/(.*)$ /%1/$1 [L]
En anglais, cette règle dit: si l'hôte est pas maindomain.co.za, mais se termine toujours en .co.za, puis réécrire l'URL afin que est ajouté avec/domainAlias /. Avec cette règle, vous obtenez:
input output
----- ------
http://foo.co.za/a.php http://main.co.za/foo/a.php
http://foo.co.za/a.aspx?r=1 http://main.co.za/foo/a.aspx?r=1
Vous pouvez aussi aller un autre niveau et faire de la réécriture conditionnelle à la présence du répertoire, quelque chose comme ceci:
RewriteCond %{HTTP_HOST} ^(?!mainDomain)([^\.]+)\.co\.za$
RewriteCond c:\wwwroot\%1 -d
RewriteRule ^/(.*)$ /%1/$1 [L]
Cela dit: si l'hôte n'est pas maindomain.co.za, ET le répertoire c: \ wwwroot \ domainAlias existe, puis réécrire pour préfixer ....
Mais dans ce cas, vous pourriez plutôt faire l'inverse - tester pour le manque d'existence de le répertoire - et rediriger vers un 404:
RewriteCond %{HTTP_HOST} ^(?!mainDomain)([^\.]+)\.co\.za$
RewriteCond c:\wwwroot\%1 !-d
RewriteRule ^/(.*)$ - [NF]
NF = 404
vous pouvez également faire [F] qui est un 503 (interdit). IIRF fonctionne sur IIS5, IIS6 ou IIS7.
Quelle version d'IIS? Peut-être ajouter "dans IISx" au sujet. –