Pracuję nad witryną, która korzysta z funkcji przepisywania adresów URL w IIS 7, aby wykonać stałe przekierowanie z witryny example.com na www.example.com, a także przepisać podobne nazwy domen na "główne", na przykład z www.examples.com to www.example.com.Przepisywanie adresów URL w IIS7: Jak nie rezygnować z protokołu HTTPS z przepisanego adresu URL?
Ta reguła przepisywania - poniżej - pracował dobrze przez jakiś czas. Jednak ostatnio dodaliśmy obsługę HTTPS i zauważyliśmy, że jeśli użytkownicy odwiedzą jeden z adresów URL, które mają zostać przepisane do witryny www.example.com, to HTTPS zostanie usunięty. Na przykład, jeśli użytkownik odwiedza https://example.com, zostanie przekierowany na numer http://www.example.com, a my chcielibyśmy, aby zostały wysłane do https://www.example.com.
Oto reguła przepisywania zainteresowania (w pliku web.config):
<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>
Jak widać, url elementu Action Punkty atrybutów bezpośrednio na stronę http: //, więc mam dlaczego https://example.com jest przekierowywany do http://www.example.com. Moje pytanie brzmi: jak to naprawić? Próbowałem (naiwnie) po prostu usunąć część http: // z atrybutu url, ale to nie zadziałało.
Wydaje się, że po prostu pozostawiając 'http: //' z URL przekierowania spowoduje IIS 7.5 korzystać z protokołu żądania przychodzącego. – HABO