IIS7 URL Rewriting: Wie man HTTPS-Protokoll von der neu geschriebenen URL nicht fallen lässt?
Ich bin an einer website arbeiten, verwendet IIS 7 und URL-rewriting-Funktion um eine dauerhafte Umleitung von example.com zu www.example.com sowie umschreiben von ähnlichen domain-Namen für die "Haupt" ein, wie aus www.examples.com zu www.example.com.
Diese rewrite-Regel - siehe unten - hat gut funktioniert für einige Zeit. Jedoch, wir haben vor kurzem Hinzugefügt HTTPS-Unterstützung und bemerkte, dass, wenn Benutzer besuchen Sie eine der URLs umgeschrieben werden www.example.com dann HTTPS gelöscht. Zum Beispiel, wenn ein Benutzer besucht https://example.com Sie umgeleitet, um http://www.example.com, während wir möchten, dass Sie gesendet werden, um https://www.example.com.
Hier ist die rewrite-Regel von Interesse (im Web.Konfiguration):
<rule name="Canonical Host Name" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^example\.com$" />
<add input="{HTTP_HOST}" pattern="^(www\.)?example\.net$" />
<add input="{HTTP_HOST}" pattern="^(www\.)?example\.info$" />
<add input="{HTTP_HOST}" pattern="^(www\.)?examples\.com$" />
</conditions>
<action type="Redirect" url="http://www.example.com/{R:1}" redirectType="Permanent" />
</rule>
Wie Sie sehen können, ist das action-element die url-Attribut Punkte direkt auf http://, so bekomme ich, warum https://example.com weitergeleitet http://www.example.com. Meine Frage ist, wie kann ich dieses Problem beheben? Ich habe versucht (naiv) , legen Sie einfach das http://Teil der url-Attribut, aber das hat nicht funktioniert.
HTTP://
aus der redirect-URL bewirkt, dass IIS 7.5 verwenden, die eingehende Anfrage zu Protokoll. InformationsquelleAutor der Frage Scott Mitchell | 2010-04-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist Scotts Antwort mit Hasan Verbesserungen. Dabei sollten gemischte SSL/nicht-SSL-Websites. Die Regel sagt im Grunde", wenn die url nicht haben http://www.example.com" eine permanente Umleitung zu. Im wesentlichen... Sie umleiten Menschen, die Sie besuchen, ohne www oder direkt an Ihre IP-Adresse.
InformationsquelleAutor der Antwort Ralph N
Herausgefunden, die Antwort mit etwas Hilfe von meinen Kollegen.
Ich brauchte, um mehrere Regeln mit Bedingung auf {HTTPS}. Hinweis: die {HTTPS} Bedingung in der folgenden Regeln.
Dann wiederholte ich die Regel-pair-Mädchen, die oben für die Alternative domain-Namen.
InformationsquelleAutor der Antwort Scott Mitchell
Wenn Sie nur wollen, um die Umleitung basierend auf den aktuell verwendeten Protokoll (wie in deinem letzten Beispiel), dann gibt es eine viel einfachere Lösung, die Verringerung der Menge von Regeln, die Sie benötigen. Das folgende ist, was ich gelernt habe von einem Kollegen von mir.
Wie Sie gesehen haben, die {HTTPS} - argument enthält den Wert ON oder OFF. Sie können die Karte diesen Wert auf https://oder http://durch die Fütterung dieser Wert in eine rewritemap.
Hier ist, wie dies funktionieren würde:
1 - Erstellen Sie eine rewritemap Abschnitt für die Zuordnung der {HTTPS} Wert:
Es ist bis zu Ihnen zu entscheiden, ob Sie möchten, um nur das Protokoll, oder das Semikolon und die Schrägstriche als gut. Es spielt keine Rolle für die Lösung, aber halten Sie im Verstand, wo immer Sie finden es.
2 - Finden Sie auf dieser Karte wo auch immer Sie brauchen. In diesem Beispiel werden in outbound-Regeln, aber es werden auch arbeiten, die in Ihrem Szenario:
Ist es, die URL-Rewrite-Modul sollte nun automatisch das korrekte Protokoll für Ihre links, je nach, wenn Sie https verwenden, oder, natürlich, http.
Hoffe, das hilft!
InformationsquelleAutor der Antwort Hasan Karagülmez
Hier ist eine cross-domain-Lösung, die funktioniert nicht nur auf
example.com
aber auch auf jedem domain -InformationsquelleAutor der Antwort Twisted Whisper