Ошибка правила перезаписи: ошибка HTTP 500.50 - ошибка модуля перезаписи URL.Выражение "https://abc.com/{R:1}" не может быть расширено - PullRequest
15 голосов
/ 02 августа 2011

Каждый раз, когда кто-то делает запрос по протоколу 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}" не может быть расширено.

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

Ответы [ 2 ]

17 голосов
/ 31 марта 2012

Совпадения начинаются с нуля.

<action type="Rewrite" url="https://abc.com/{R:1}" />

Не будет работать, потому что у вас есть только одно совпадениеВам необходимо:

<action type="Rewrite" url="https://abc.com/{R:0}" />

Кроме того, это не сработает, поскольку вы можете сопоставить только путь ниже корня сайта.,Попробуйте вместо этого:

      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTPS}" pattern="^OFF$" />
      </conditions>
0 голосов
/ 07 января 2014

Вы можете перенаправить через веб-конфигурацию, чтобы надеяться, что это поможет полный

<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>
...