Rewrite rule error: HTTP Error 500.50 - URL Rewrite Module Error. The expression "https://abc.com/{R:1}" cannot be expanded

42,260

The matches are zero based.

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

Won't work because you only have one match. You need:

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

Also, this won't work, because you can only match on the path below the site root.

<match url="^(?!https://).*" ignoreCase="false" />

It looks like you are checking for ssl. Try this instead:

      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTPS}" pattern="^OFF$" />
      </conditions>
Share:
42,260
TCM
Author by

TCM

Updated on July 02, 2020

Comments

  • TCM
    TCM almost 4 years

    Whenever someone makes request over HTTP protocol I rewrite the url to make it HTTPS. This is the code in 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> 
    

    However when I browse on http:// I get IIS error

    HTTP Error 500.50 - URL Rewrite Module Error. The expression "https://abc.com/{R:1}" cannot be expanded.

    How can I resolve this? I am utterly confused.

  • jpaugh
    jpaugh almost 4 years
    While the matches are zero-based, the first match {R:0} always contains the full string matched, and the second match {R:1} matches the first capture group within {R:0}. So, this answer is incorrect in the first part. You can see for yourself in the "Test Pattern" dialog.