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

时间:2011-08-02 17:56:30

标签: asp.net iis url-rewriting iis-7 url-rewrite-module

每当有人通过HTTP协议发出请求时,我都会重写网址以使其成为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 个答案:

答案 0 :(得分:17)

比赛基于零。

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

答案 1 :(得分:-1)

您可以通过网络配置重定向到 希望它会有所帮助

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