当网络应用程序在网站内时,IIS Http为Https

时间:2017-07-12 18:23:39

标签: iis url-rewriting iis-7

我有这个重写规则:

<rewrite>
       <rules>
    <rule name="Redirect to http" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
        <match url="*" negate="false" />
        <conditions logicalGrouping="MatchAny">
            <add input="{HTTPS}" pattern="off" />
        </conditions>
        <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Found" />
    </rule>
</rules>
    </rewrite>

我想将所有http重定向到https trafic,但问题是我的网络应用不在根文件夹中,所以它是这样的:

http:\\my-site.com\MyWebApp\some-parameters-here

并在重定向后转到:

https:\\my-site.com\some-parameters-here

...而不是

https:\\my-site.com\MyWebApp\some-parameters-here

如果不对URL中的那部分进行硬编码,如何修复此重定向?

1 个答案:

答案 0 :(得分:0)

这对我有用:

<rule name="HTTP to HTTPS redirect" enabled="false" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll"  trackAllCaptures="false">
        <add input="{HTTPS}" pattern="^OFF$" />
        <add input="{HTTP_HOST}" pattern="^((.+)?my-site\.com)$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />

关键是替换:{R:1}。这可以在没有HTTP_HOST

的情况下保持完整链接

<强>更新 关于你的评论

您可以使用:

   <rule name="HTTP to HTTPS redirect" stopProcessing="true">
   <match url="(.*)" />
   <conditions>
   <add input="{HTTPS}" pattern="^OFF$" />
    </conditions>
     <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" 
      redirectType="Permanent" />
   </rule>