Я гуглил.Я попробовал тысячу вариантов, найденных на SO, но безрезультатно.
Вот моя проблема:
Один Vhost на IIS.Десять доменов указывают на это.Приложение настроено на использование двух имен хостов в одном домене, но все остальные псевдонимы должны перенаправляться на основной site1.domain.com.
site1.domain.com (основной сайт / host.domain) site2.domain.com (второе приложение, запущенное на том же виртуальном хосте)
Чего я не хочу делать, так это настроить группу виртуальных хостов.Я пытаюсь запустить все это в одном vhost и перенаправить все в web.config.
Это последняя версия web.config
, которая находится в бесконечном цикле.Я понимаю, почему, но я не могу исправить второе правило для работы.
Моя идея:
Сначала найдите «второе» имя хоста и разберитесь с ним,так как он буквальный, то перенаправьте его на домСамо по себе это работает просто отлично.
Как только это будет сделано, найдите все, что не является site1.domain.com, и перенаправьте его на site1.domain.com.
Конечно, все нужно перенаправить на SSL.
Да, я знаю, что я слишком буквален, но я просто не могу думать или читать, чтологика мне нужна.
<rewrite>
<rules>
<rule name="site2 HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(site2.)?domain.com" ignoreCase="true" />
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}{R:1}" />
</rule>
<rule name="site1 HTTPS redirect" stopProcessing="true">
<match url="(.*)" ignoreCase="true" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="(https://site1)?.domain.com" />
</conditions>
<action type="Redirect" url="https://site1.domain.com{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>