2009-04-04 9 views
4

Je rédigeais cette question et dans le processus, cela m'a forcé à réfléchir un peu plus fort et je l'ai moi-même répondu, même si je ne comprends toujours pas pourquoi il l'a résolu.IIS 7 Url Réécriture et deux domaines

J'ai un compte sur un hôte partagé avec 2 domaines enregistrés. J'utilise la pile Asp.Net pour exécuter quelques choses comme un blog et un autre site que je prévois de lancer éventuellement. Mes deux domaines pointent vers la racine; le premier est l'original que j'ai utilisé pour l'inscription, le second est un pointeur de domaine racine que j'ai ajouté. Voici comment je veux qu'il comporte:

Structure du répertoire:

 
Root      (www.domain1.com) 
Root --\ Blog    (www.domain1.com/blog) 
Root --\ Site2   (should be directed here if www.domain2.com) 
Root --\ Site2 --\ Junk (www.domain2.com/junk) 

En ce moment, si vous tapez www.domain1.com ou www.domain1.com/blog, qui se comporte comme prévu et je Je vais bien avec ça. Pour www.domain2.com, je la règle de réécriture configuré comme celui-ci (du web.config):

<rule name="Domain2"> 
    <match url="(.*)(/)?" ignoreCase="false" /> 
    <conditions logicalGrouping="MatchAll"> 
     <add input="{HTTP_HOST}" pattern="(www\.)?domain2\.com" ignoreCase="false" /> 
    </conditions> 
    <action type="Rewrite" url="/site2/{R:1}" /> 
</rule> 

Cette règle est censée correspondre à tout chemin si l'hôte est domain2.com, enlever le chemin à la ressource demandée et formatez-la correctement. Donc, quand quelqu'un tape www.domain2.com/junk/default.aspx, dans IIS, cela résout à www.domain2.com/site2/junk/default.aspx sans que l'utilisateur le sache. C'est principalement fonctionnant comme annoncé sauf quand l'utilisateur ne tape pas une barre oblique finale dans un sous-dossier. IE:

www.domain2.com (les)
www.domain2.com/ (travaux)
www.domain2.com/junk/ (travaux)
www.domain2.com/junk (doesn 'I travail!) IIS 7 perd son cerveau ici et le met en forme comme www.domain2.com/site2/junk parce qu'une 2ème demande est automatiquement émise pour la barre oblique et un 404 arrive.

Alors, je mis à jour que l'action soit:

<action type="Rewrite" url="/site2/{R:1}/" /> 

Cela semble avoir résolu, mais pourquoi ne pas IIS 7 maintenant cracher www.domain2.com/junk2/default.aspx/? Comment sait-il ne pas ajouter une barre oblique finale à une extension de document?

Répondre

3

www.domain2.com/junk ne fonctionne pas car vous avez ajouté une barre oblique dans la correspondance, mais l'URL actuelle ne correspond pas. Il contient juste "indésirable".

vous devez ajouter également:

<rule name="Domain2" stopProcessing="true">

il n'évalue pas d'autres règles si correspondance est trouvée. Je soupçonne que vous pouvez voir que ce qui vous trouble, c'est d'autres règles que vous avez configurées.

Questions connexes