重写规则错误:HTTP错误500.50 - URL重写模块错误.表达式"https://abc.com/{R:1}"无法扩展

TCM*_*TCM 15 asp.net iis iis-7 url-rewriting url-rewrite-module

每当有人通过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> 
Run Code Online (Sandbox Code Playgroud)

但是,当我在http://上浏览时,我收到IIS错误

HTTP错误500.50 - URL重写模块错误.表达式"https://abc.com/{R:1}"无法扩展.

我该如何解决这个问题?我完全糊涂了.

Sou*_*eAK 17

比赛基于零.

<action type="Rewrite" url="https://abc.com/{R:1}" />
Run Code Online (Sandbox Code Playgroud)

因为你只有一场比赛而无法奏效.你需要:

<action type="Rewrite" url="https://abc.com/{R:0}" />
Run Code Online (Sandbox Code Playgroud)

此外,这不起作用,因为您只能匹配站点根目录下的路径.

<match url="^(?!https://).*" ignoreCase="false" />
Run Code Online (Sandbox Code Playgroud)

看起来你正在检查ssl.试试这个:

      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTPS}" pattern="^OFF$" />
      </conditions>
Run Code Online (Sandbox Code Playgroud)

  • 虽然匹配是从零开始的,但第一个匹配“{R:0}”*始终*包含匹配的完整字符串,第二个匹配“{R:1}”匹配“{R:1}”中的“第一个”捕获组: 0}`。所以,这个答案在第一部分是不正确的。您可以在“测试模式”对话框中亲自查看。 (2认同)