IIS URL重写不是重定向子

问题描述:

URL重写规则从HTTP重定向到https:IIS URL重写不是重定向子

<rewrite> 
    <rules> 
     <rule name="http to https" enabled="false" stopProcessing="true"> 
      <match url="(.*)" /> 
      <conditions> 
       <add input="{HTTPS}" pattern="^OFF$" /> 
      </conditions> 
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /> 
     </rule> 
    </rules> 
</rewrite> 

但是,当您通过旧书签或键入地址输入浏览器直接去像http://www.example.com/employees子文件夹,它不会重定向到https://www.example.com/employees,但会保留在http://www.example.com/employees

奇怪的是,我们对开发站点有相同的重写规则,它将从http://dev.example.com/employees重定向到https://dev.example.com/employees

很奇怪。有任何想法吗?

这就是我使用的 - 我将它添加到applicationhost.config文件中,所以它在全局级别。这与你的有点不同,我运行了许多不同的站点,从来没有这样描述过的问题。

<rule name="Root Redirect to HTTPS" enabled="true" stopProcessing="true"> 
    <match url="(.*)" /> 
     <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
      <add input="{SERVER_PORT}" pattern="^80$" /> 
      <add input="{HTTP_HOST}" pattern="example\.com$" /> 
     </conditions> 
    <action type="Redirect" url="https://www.example.com/{R:0}" /> 
</rule> 
+0

这可以用于托管非SSL站点的服务器吗?我在dev网站上尝试过它,它开始做生产站点所做的同样的事情,而不是将子文件夹重定向到https。 – gottmine

+0

我让它运行在具有一些SSL站点和一些非SSL站点的服务器上。如果你在IIS的globalrules级别执行此操作,则需要确保你有这样的条件:'来告诉它要在哪些网站上工作。 – Henry