Наш файл веб-конфигурации использует переписывание URL-адресов, по существу перенаправляя любой http-трафик на https.
Это отлично работает, кроме локальной разработки. Какое-то время нам нужно просто не забыть закомментировать код из web.config и снова раскомментировать его для фиксации. Естественно, это не лучший способ работы.
Код простой
<rewrite>
<rules>
<rule name="Redirect-AllWWW-ToSecureNonWWW">
<match url="^((?!local).)*$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(?:www\.)(.+)$" />
</conditions>
<action type="Redirect" url="https://{C:1}/{R:0}"/>
</rule>
<rule name="Redirect-AllNonSecure-ToSecureNonWWW-ExcludingLocalhost">
<match url="^((?!local).)*$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^localhost$" negate="true" />
<add input="{HTTPS}" pattern="^off$" />
<add input="{HTTP_HOST}" pattern="^(?:www\.)?(.+)" />
</conditions>
<action type="Redirect" url="https://{C:1}/{R:0}" />
</rule>
</rules>
</rewrite>
И в соответствии с regex101 это работает! https://regex101.com/r/3Mz6w1/1
Однако, когда я на локальном хосте, я все равно перенаправляюсь на HTTPS.
Почему это работает в regex101, а не в моем файле web.config
https?:\/\/(?!.*?local).*
- person Marco Luzzara   schedule 08.07.2017