Ich schrieb diese Frage auf und zwang mich dazu ein wenig härter zu denken und beantwortete es selbst, obwohl ich immer noch nicht ganz verstehe, warum es gelöst wurde.IIS 7 Url Rewriting und zwei Domains
Ich habe ein Konto auf einem freigegebenen Host mit 2 Domänen registriert. Ich benutze den Asp.Net-Stack, um ein paar Dinge wie einen Blog und eine andere Seite, die ich plane, zu starten, laufen zu lassen. Beide meiner Domains zeigen auf die Wurzel; Das erste ist das Original, mit dem ich mich angemeldet habe, das zweite ist ein Root-Domain-Pointer, den ich hinzugefügt habe. Hier ist, wie ich es verhalten soll:
Verzeichnisstruktur:
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)
Gerade jetzt, wenn Sie in www.domain1.com oder www.domain1.com/blog geben, die wie erwartet und ich verhält Mir geht es gut. Für www.domain2.com habe ich die Rewrite-Regel wie folgt konfiguriert (aus der 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>
Diese Regel jeden Pfad übereinstimmen soll, wenn der Host domain2.com ist, den Pfad pflücken zu der angeforderten Ressource und formatieren Sie sie ordnungsgemäß. Wenn jemand also www.domain2.com/junk/default.aspx eintippt, löst sich dies in IIS auf www.domain2.com/site2/junk/default.aspx auf, ohne dass der Benutzer es jemals weiß. Dies ist meist funktioniert wie angegeben, außer wenn der Benutzer einen abschließenden Schrägstrich in einem Unterordner nicht eingeben. IE:
www.domain2.com (Werke)
www.domain2.com/ (Werke)
www.domain2.com/junk/ (Werke)
www.domain2.com/junk (doesn arbeite nicht!) IIS 7 verliert hier sein Gehirn und formatiert es wie www.domain2.com/site2/junk, weil eine zweite Anfrage automatisch für den abschließenden Schrägstrich ausgegeben wird und ein 404 passiert.
Also, aktualisiere ich die Aktion sein:
<action type="Rewrite" url="/site2/{R:1}/" />
Dies scheint es gelöst zu haben, aber warum nicht IIS 7 jetzt www.domain2.com/junk2/default.aspx/ ausspucken? Woher weiß es, an eine Dokumenterweiterung keinen Schrägstrich anzuhängen?