Для нашего веб-сайта (Windows Server 2016 Datacenter, IIS 10) мы используем два разных URL - скажем, url1.com
и url2.com
используя тот же корневой каталог и тот же пул приложений.
В нашем web.config мы определяем перенаправление
<rules>
<rule name="Redirect to HTTPS" stopProcessing="true" xdt:Transform="Insert" >
<match url="^(.*)$" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
<add input="{HTTP_HOST}" matchType="Pattern" pattern="^localhost(:\d+)?$" negate="true" />
<add input="{HTTP_HOST}" matchType="Pattern" pattern="^127\.0\.0\.1(:\d+)?$" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>
</rules>
Это работает для всех запросов, таких как url1.com
, http: // url1.com
и http://www.url1.com
, но не для url2.com
. Ввод url2.com в нашем браузере приводит к http://url2.com
и, следовательно, к ошибке 403.
Что не так?
Некоторое время раздумий решило нашу проблему: подробный (IIS) номер ошибки был 403.4 - требуется SSL. Это означает, что мой запрос уже был отклонен IIS и не дошел до нашего сайта. Таким образом, нельзя было применить перенаправление на https:// для url2.com
.
В диспетчере IIS я обнаружил, что для этого URL-адреса выбран вариант «Требуется SSL». Снятие этого флажка решило мою проблему.