2016-03-02 136 views
2

我想在web.config中使用此代码将网站上的所有页面重定向到https://然而,只要我尝试此操作,我会得到一个无限循环(Firefox告诉我重定向将永远不会正常结束),但我不知道为什么。我只能访问FTP并且无法直接访问服务器,因此我无法使用GUI方法。我在这个不熟悉的领域,任何帮助将不胜感激。web.config重定向到https导致重定向循环

<rule name="Redirect to https" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions> 
    <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
    </conditions> 
    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" /> 
</rule> 

回答

1

试试这个规则,而不是检查HTTPs == off,检查HTTPS != ON

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

我无法解释为什么你的规则不起作用,但这是我一直使用的规则,我没有问题。值得注意的是:在使用HTTP_HOST值时,我发现IIS重写规则偶尔会出现问题,就好像它有错误的值一样,所以可以肯定地说IIS重写规则不是100%可靠的。

+0

我仍然收到同样的错误:“Firefox检测到服务器以永不完成的方式重定向该地址的请求。”它可能是一个设置不正确? –

+0

@ S.Wiser您是否有其他重写规则可以取代这个?是否有可能重写模块没有安装在IIS中?我认为它不是随IIS提供的,必须单独安装。 – Keith

+0

是啊,已经有一个重写规则: <规则名称= “重定向fleurtations.uk.com到www” patternSyntax = “ECMAScript的” stopProcessing = “真”> <匹配URL =/“*”> (对不起,不知道如何格式化这个评论) –