19

每当有人通过 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}"无法展开。

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

4

2 回答 2

20

匹配是从零开始的。

<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>
于 2012-03-30T21:06:58.767 回答
-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>
于 2014-01-07T10:46:21.833 回答