#asp.net #asp.net-core #iis #asp.net-web-api #web-config
Вопрос:
Приложение построено на asp.net ядро 3.1 и реагируйте. Они имеют одно и то же происхождение.
В web.config перенаправление с http
рабочего на https
рабочий.
В web.config перенаправление с www.example.com
на example.com
не работает
// Piece of my web.config
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
</rule>
<rule name="RedirectWwwToNonWww" stopProcessing="false">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^(www.)(.*)$" />
</conditions>
<action type="Redirect" url="https://{C:2}{REQUEST_URI}" redirectType="Permanent" />
</rule>
</rules>
- В браузере www.example.com переходит в цикл перенаправления и показывает
ERR_TOO_MANY_REDIRECTS
- В почтальоне ошибка заключается в
Error: Exceeded maxRedirects. Probably stuck in a redirect loop https://www.example.com/
Ответ №1:
Вы можете попробовать это правило для перенаправления с www на none-www:
<rule name="SecureRedirect" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{HTTPS}" pattern="off" />
<add input="{HTTP_HOST}" pattern="^(www.)?(.*)$" />
</conditions>
<action type="Redirect" url="https://{C:2}" redirectType="Permanent" />
</rule>
Комментарии:
1. Ty. Работает, когда 1 правило вместо 2 правил. Я думаю, что 2 правила идут по кругу друг за другом. Это логично, но я не нашел такой информации. Я предполагаю, что идея сейчас в том, что для этого есть только 1 ввод и 1 действие(перенаправление)?
2. В конце концов, позже я перенаправлю с none-www на www. Каковы будут условия и действия?
3. Порядок выполнения правил URL-адресов-сверху вниз. Если вы хотите перенаправить с none-www на www, вы можете перейти по этой ссылке: https://weblogs.asp.net/owscott/iis-url-rewrite-rewriting-non-www-to-www .