Ошибка правила перезаписи: ошибка HTTP 500.50 - ошибка модуля перезаписи URL-адреса. Выражение "https://abc.com/{R:1" не может быть расширено
Всякий раз, когда кто-то делает запрос по протоколу HTTP, я переписываю URL-адрес, чтобы сделать его HTTPS. Это код в web.config:
<rule name="Imported Rule 1-1" enabled="true" stopProcessing="true">
<match url="^(?!https://).*" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{SERVER_PORT}" pattern="80" ignoreCase="false" />
</conditions>
<action type="Rewrite" url="https://abc.com/{R:1}" />
</rule>
Однако, когда я просматриваю http://, я получаю ошибку IIS
Ошибка HTTP 500.50 - Ошибка перезаписи URL-адреса. Выражение "https://abc.com/{R:1}"
не может быть расширено.
Как я могу это решить? Я совершенно смущен.
Ответы
Ответ 1
Матчи основаны на нуле.
<action type="Rewrite" url="https://abc.com/{R:1}" />
Не будет работать, потому что у вас есть только одно совпадение. Вам нужно:
<action type="Rewrite" url="https://abc.com/{R:0}" />
Кроме того, это не сработает, потому что вы можете соответствовать только по пути ниже корня сайта.
<match url="^(?!https://).*" ignoreCase="false" />
Похоже, вы проверяете ssl. Вместо этого попробуйте:
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
Ответ 2
Вы можете перенаправить через веб-конфигурацию в
Надеюсь, что это поможет полностью
<rule name="Redirect to WWW" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^abc.com$" />
</conditions>
<action type="Redirect" url="http://www.abc.com/{R:0}" redirectType="Permanent" />
</rule>