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>
这可以用于托管非SSL站点的服务器吗?我在dev网站上尝试过它,它开始做生产站点所做的同样的事情,而不是将子文件夹重定向到https。 – gottmine
我让它运行在具有一些SSL站点和一些非SSL站点的服务器上。如果你在IIS的globalrules级别执行此操作,则需要确保你有这样的条件: '来告诉它要在哪些网站上工作。 –
Henry