【问题标题】:Override an IIS rewrite rule for child site?覆盖子站点的 IIS 重写规则?
【发布时间】:2012-10-02 19:04:31
【问题描述】:

我想强制所有入站连接为我的站点恢复为 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 的特性。)

【问题讨论】:

    标签: iis rewrite


    【解决方案1】:

    下面的 web.config sn-p 应该做你想做的事。它会删除此应用程序的所有重写规则。

    <?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>
    

    【讨论】:

    • 如果两个应用程序共享相同的 webroot 和配置,你怎么能做类似的事情?
    • @rickard 评论不是问这个问题的正确地方,因为这是一个不同的问题。尝试搜索,或将其作为一个新问题提出。我会在这里给你一种可能性,但我不知道它是否适用于你的应用程序。能否将子文件夹转换为自己的应用程序(在 IIS 管理器中右键单击子文件夹并选择“转换...”。
    • @DenisHowe 我不知道它在哪里专门记录了重写规则,但它出现在 IIS 配置中的各处。一个例子见msdn.microsoft.com/en-us/library/ms691347%28v=vs.90%29.aspx。 (我想我最初是通过查看由 GUI 生成的配置文件发现的。)
    • 这对我有帮助站点,同时清除 .net core rest api 应用程序的重写规则。好用!
    猜你喜欢
    • 2020-04-11
    • 2015-12-27
    • 1970-01-01
    • 2021-04-17
    • 2019-03-13
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    相关资源
    最近更新 更多