IIS中的HTTP重定向问题,在浏览器上不断收到ERR_TOO_MANY_REDIRECTS错误提示。

3

我正在尝试在IIS上启用网站的HTTPS。我想将用户从HTTP重定向到HTTPS。

我已经在web.config中相应地更新了规则:

<rewrite>
        <rules>
            <rule name="Redirect to HTTPs" enabled="true" stopProcessing="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTPS}" pattern="^OFF$" />
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}/" redirectType="Permanent" />
            </rule>
        </rules>
</rewrite>

我能够将请求转换为https,但它会一直重定向到相同的带有https的URL。问题在于规则似乎会将所有URL(包括https)都重定向,然后网络选项卡中的浏览器会产生大量301错误,最终导致错误。

This webpage has a redirect loop

ERR_TOO_MANY_REDIRECTS

如果有人遇到类似的情况,请帮忙解决。如有必要,我可以提供更多信息。

谢谢


你使用的是哪个版本的IIS? - bhuvin
你是否尝试将所有页面请求重定向到 https?你的网站是否托管在负载均衡环境中? - TejSoft
@bhuvin 我正在使用IIS 7.5。 - Tirath Shah
@TejSoft 是的,我正在尝试将所有页面重定向到https,主要是主页。我不知道负载平衡环境。 - Tirath Shah
1个回答

1
尝试以下重写规则。对于由单个IIS服务器提供服务的网站,这将起作用。负载平衡环境或服务器公司需要进行一些调整。
<rewrite>
    <rules>
        <rule name="Redirect to HTTPs" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTPS}" pattern="OFF" />
            </conditions>
            <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
        </rule>
    </rules>
</rewrite>

您还可以查看问题和解决方案此处


1
这对我来说仍然是做着相同的递归重定向... 我不认为我有一个负载均衡环境。 - Tirath Shah
你是否在直接使用http://协议引用css、javascript或其他文件?这可能会创建重定向循环。你必须提供相对路径来引用图片、css和javascript文件。 - TejSoft
这是从URL栏中获取的主要URL。 - Tirath Shah
1
是的,除了主URL之外,如果网页将CSS、JS或图像文件等引用为“http://website.com.au/images/image.png”等,则会进入重定向循环。重定向规则将适用于所有请求。 - TejSoft
如果服务器在负载均衡器后面,那么调整是什么? - Adrian Rosca
1
@AdrianRosca,您需要配置负载均衡器以传递名为HTTP_X_FORWARDED_PROTO的变量,该变量将指定原始请求是http还是https。因此,条件将从<add input="{HTTPS}" pattern="OFF" />更改为<add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" />。 - TejSoft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接