将HTTPS重定向添加到现有规则以将子域重写到文件夹

时间:2016-07-05 10:18:35

标签: url-rewrite-module

我一直在使用以下模式为我的主站点和子域设置目录结构:

一个。每个站点都在自己的子文件夹中,包括主站点,以便我有类似

的内容
\wwwroot
     \main
     \subdomain1

B中。 wwwroot中只有一个文件。带有以下

的web.config文件
<configuration>
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <rewrite>
        <rules>
            <rule name="Rewrite to folder1" stopProcessing="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTP_HOST}" pattern="^www.MyMainDomain.com$" />
                </conditions>
                <action type="Rewrite" url="main/{R:1}" />
            </rule>
            <rule name="subdomain1.MyMainDomain.com to sub folder" enabled="true" stopProcessing="true">
                <match url="(.*)" ignoreCase="true" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{HTTP_HOST}" pattern="^subdomain1\.MyMainDomain\.com$" ignoreCase="false" />
                    <add input="{PATH_INFO}" pattern="^/subdomain1($|/)" negate="true" />
                </conditions>
                <action type="Rewrite" url="\subdomain1\{R:0}" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

如何将https重定向仅添加到子域?

调试正在重写/重定向的内容的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我不确定调试重写/重定向流量的最佳方法是什么。

在您的情况下,您应该检查它是否是http请求:

<add input="{HTTP}" negate="true" pattern="^ON$" />

或检查是否缺少https请求:

<add input="{HTTPS}" negate="true" pattern="^OFF$" />

另外,尝试将type =“rewrite”的行从重写更改为永久重定向,这样浏览器就会获得正确的301响应代码。

<action type="Redirect" url="https://{HTTP_HOST}/" redirectType="Permanent" />