Подтвердить что ты не робот

Ошибка правила перезаписи: ошибка 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}" не может быть расширено.

Как я могу это решить? Я совершенно смущен.

4b9b3361

Ответ 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>