覆盖子站点的IIS重写规则?

时间:2012-10-12 01:31:55

标签: iis rewrite

我想强制所有入站连接恢复为我的网站的HTTPS。在StackOverflow.com上搜索答案产生了以下代码:

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

这很有效。现在,所有进入http://mySite.com的人都被重定向到https://mySite.com

mySite.com有一个子应用程序,可通过mySite.com/ajax/访问。我不希望这个子应用程序的入站连接受到重写;连接到/ ajax子应用程序时,应保留用户指定的原始协议(http或https)。我应该在这个子应用程序的web.config文件中放置什么来否定在父级别进行的重写?

(我希望/ ajax子站点免于https重写的原因是因为它可以从第三方基于HTTP的网页访问。如果正在调用/ ajax的第三方页面是HTTP(不是HTTPS),然后我想在调用时保留HTTP'。)

1 个答案:

答案 0 :(得分:15)

以下web.config代码段应该可以执行您想要的操作。它删除了此应用程序的所有重写规则。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <!-- Insert rules for this application (if any) **below** the "clear" -->
            </rules>
        </rewrite>
    </system.webServer>
</configuration>