为指向同一文件夹的多个网站使用SSL重定向时保留URL

时间:2012-11-06 16:35:08

标签: ssl iis-7.5 http-redirect

我有多个网站指向中央文件夹(IIS 7.5)

company1.domain.com/wo指向D:\ inetpub \ wo

company2.domain.com/wo指向D:\ inetpub \ wo

company3.domain.com/wo指向D:\ inetpub \ wo

所有网站都适用于HTTP和HTTPS(如果手动输入)。但是,站点必须通过HTTPS连接。我想设置自动SSL重定向但遇到问题。我创建了URL重写规则,但由于这只是一个webconfig文件,因此URL重定向到一个网站(不保留URL)。 如何设置SSL重定向以保留URL并且所有网站都指向同一文件夹? 任何帮助将不胜感激。 感谢

1 个答案:

答案 0 :(得分:0)

在检查是否启用了HTTPS时,您应该包含主机标头,然后重定向到相应域的https网址。

以下是一个例子:

<rewrite>
    <rules>
        <clear />
        <rule name="Force HTTPS - www.domain1.com" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAll">
                <add input="{HTTPS}" negate="true" pattern="^ON$" />
                <add input="{HTTP_HOST}" pattern="\.domain1\.com$" />
            </conditions>
            <action type="Redirect" url="https://www.domain1.com{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
        </rule>
        <rule name="Force HTTPS - www.domain2.com" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAll">
                <add input="{HTTPS}" negate="true" pattern="^ON$" />
                <add input="{HTTP_HOST}" pattern="\.domain2\.com$" />
            </conditions>
            <action type="Redirect" url="https://www.domain2.com{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
        </rule>
        <!-- add more rules for other domains if needed -->
        </rule>
    </rules>
</rewrite>

您可以根据需要为域名添加任意数量的规则。

编辑:抱歉,我误解了你的问题。在这种情况下,它甚至更简单:

<rewrite>
    <rules>
        <clear />
        <rule name="Force HTTPS" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAll">
                <add input="{HTTPS}" negate="true" pattern="^ON$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

无需检查主机标头,只需在重定向中包含主机名即可。您只需要确保所有域名都有SSL证书。