.net IIS强制SSL重定向赢得';t重定向根流量

.net IIS强制SSL重定向赢得';t重定向根流量,.net,asp.net-mvc-5,web-config,iis-10,.net,Asp.net Mvc 5,Web Config,Iis 10,我正在使用IIS 10,并尝试将非ssl通信重定向到ssl。我已经搜索了很多,没有找到任何其他报告,所以我在这里问 重定向适用于所有URL,但根流量除外,这非常奇怪 例如,如果我输入http://sitename.com它不会重定向到https,但是如果我键入http://sitename.com/index.html它重定向到https 如果出于任何原因,我的根页面是index.html页面 Web.config代码: <system.webServer> <rewrit

我正在使用IIS 10,并尝试将非ssl通信重定向到ssl。我已经搜索了很多,没有找到任何其他报告,所以我在这里问

重定向适用于所有URL,但根流量除外,这非常奇怪

例如,如果我输入
http://sitename.com
它不会重定向到
https
,但是如果我键入
http://sitename.com/index.html
它重定向到
https

如果出于任何原因,我的根页面是index.html页面

Web.config代码:

<system.webServer>
  <rewrite>
    <rules>
      <rule name="Force SSL" patternSyntax="Wildcard" stopProcessing="true">
        <match url="*" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
          <add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" negate="true" />
          <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
          <add input="{HTTP_HOST}" pattern="(www\.)?sitename\.com" />
        </conditions>
        <action type="Redirect" url="https://sitename.com{REQUEST_URI}" appendQueryString="false" />
      </rule>
      ...
    </rules>
  </rewrite>
</system.webServer>


...
另一个注意事项是,我在IIS的顶层添加了这个,但它仍然不起作用


我注意到,在我对网站IIS中规则的定义中,它在输入列“\”

之后添加了“始终匹配失败”。我不确定你比赛的结果是什么

当我将patternSyntax=“Wildcard”更改为正则表达式时,它起了作用。所以我建议你使用正则表达式

我还为您重写了一条新规则,将http重定向到https。Https用于确定当前请求是否使用SSL。https的值是On和Off,On表示请求使用SSL。更多服务器变量可参考。 即使是根流量,它也始终有效。你可以用它

<rule name="Force SSL" patternSyntax="Wildcard" stopProcessing="true">
    <match url="*" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTPS}" pattern="Off" />
                    <add input="{HTTP_HOST}" pattern="sitename.com" />
    </conditions>
    <action type="Redirect" url="https://sitename.com{REQUEST_URI}" appendQueryString="false" />
  </rule>


@LexLi嗯,在尝试安装跟踪时,我不得不重新安装rewrite,使其显示为跟踪模块。现在重定向在根目录下工作