如何将https://非www重定向到https:// www

时间:2015-04-14 15:03:55

标签: iis

您好我想将非www网站的https://架构重定向到https://www。站点。

我使用下面的代码

<rule name="Force HTTPS nonwww" enabled="true">
                <match url="(.*)" ignoreCase="false" />
                <conditions>
                    <add input="{HTTPS}" pattern="off" />
                    <add input="{HTTP_HOST}" negate="true" pattern="^www\.([.a-zA-Z0-9-]+)$" />
                </conditions>
                <action type="Redirect" url="https://www.{HTTP_HOST}{REQUEST_URI}" appendQueryString="true" redirectType="Permanent" />
            </rule>
            <rule name="Force HTTPS" enabled="true">
                <match url="(.*)" ignoreCase="false" />
                <conditions>
                    <add input="{HTTPS}" pattern="off" />
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="true" redirectType="Permanent" />
            </rule>

当我使用http://访问我们的网站时它工作正常但是当我使用https://访问我们的网站时,它会抛出404错误。

基本上,当我们点击http:或https:到我们的网站时,它应该重定向到https://www.example.com

我在IIS 7中测试了上述规则,并且使用http://和https://成功测试了但是它不能用于https://

我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

        <conditions>
            <add input="{HTTPS}" pattern="off" />
        </conditions>

这就是说'不要为传入的https请求执行此操作'。 由于您的规则都设置了,因此您永远不会重定向https请求 一般来说,你需要小心,你不想进入无限循环重定向https://x =&gt; https://x,所以你的第二条规则应保持原样 你可以安全地改变你的第一条规则:

        <conditions>
            <add input="{HTTPS}" pattern="off" />
            <add input="{HTTP_HOST}" negate="true" pattern="^www\.([.a-zA-Z0-9-]+)$" />
        </conditions>

        <conditions>
            <add input="{HTTP_HOST}" negate="true" pattern="^www\.([.a-zA-Z0-9-]+)$" />
        </conditions>

答案 1 :(得分:0)

我们能够解决这个问题。由于它抛出了无效的主机错误,因此无法找到站点名称。因此,我们创建了重定向网站并使用httpredirect,将其重定向回我们的https://www.example.com网站。

这对我们有用。

感谢大家的帮助。