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

Cha*_*ker 7 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>
Run Code Online (Sandbox Code Playgroud)

这非常有效.现在每个进入http://mySite.com的人都被重定向到https://mySite.com.

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

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

Mos*_*atz 16

以下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>
Run Code Online (Sandbox Code Playgroud)

  • @DenisHowe我不知道具体的重写规则在哪里被记录,但它在IIS配置中出现.有关示例,请参阅https://msdn.microsoft.com/en-us/library/ms691347%28v=vs.90%29.aspx.(我认为我最初通过查看由GUI生成的配置文件来发现它.) (2认同)