Iis 7 Umbraco https重写规则导致无限循环

Iis 7 Umbraco https重写规则导致无限循环,iis-7,rewrite,umbraco,Iis 7,Rewrite,Umbraco,我有下面的重写规则,它可以很好地用于在IIS7上运行的常规asp.net项目 <rule name="HTTP to HTTPS redirect" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="off" ignoreCase="true" /> </conditions>

我有下面的重写规则,它可以很好地用于在IIS7上运行的常规asp.net项目

<rule name="HTTP to HTTPS redirect" stopProcessing="true">
  <match url="(.*)" />
    <conditions>
        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
    </conditions>
  <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>


因此,当在httphttp
://{domain}/aboutus
访问我们的一个页面时,将重定向到httpshttps
://{domain}/aboutus
。现在,在Umbraco站点中使用相同的重写规则会导致无限循环。对于我们的Umbraco站点,我们没有任何其他重写规则。这让我觉得Umbraco在某种程度上劫持了从http到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>

由于url的正则表达式没有过滤输入(
),您应该在代码中使用
redirectType=“Permanent”
参数:

更多信息可在此处找到:

值得注意的是,默认情况下,重新定向为302次,如果要执行301次重新定向,则需要添加以下内容:
redirectMode=“Permanent”

您可以在其网站上找到URL重写组件的完整说明:


一个潜在的解决方案是使用Umbraco重写模块,而不是使用IIS重写

在URL重写配置文件(
config/UrlRewriting.config
)中,以下规则是如何从HTTP重定向到HTTPS的简单示例:

<add name="https Rewrite"
    redirect="Domain"
    redirectMode="Permanent"
    virtualUrl="http://(.*)"
    destinationUrl="https://$1"
    ignoreCase="true" />

此规则应放在
部分中


编辑:根据sebastiaan的评论,urlRewriting.net模块已过时,应尽可能使用IIS解决方案。

我还遇到了有关Umbraco 6.2.4无限重定向循环的问题。这是每周左右随机发生的。我的站点都是SSL,umbracousesssl=false

我的HTTP到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}/{R:1}" redirectType="Permanent"  />

我根据@sebastiaan更新了以下内容

<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" />

听起来像是因为R:1可以包含一个空字符串,所以它有可能导致循环。{REQUEST_URI}将始终至少包含一个斜杠。不确定这是否是@sebastiaan推荐后者的原因


如果问题仍然存在,我将向您报告。希望更新后的规则能够解决这个问题

我看到你在另一个线程中回答了这个问题,我实际上已经尝试了这个,但这个不起作用。同样,重写规则在一个普通的asp.net网站上已经起作用了,但在一个Umbraco网站上却不起作用。我奖励了这个答案,因为它最接近我需要的解决方案。我测试了这个,以及我问题中的重写,两人都在重新安装Umbraco。但是,我的问题仍然存在。如果您需要更多帮助,您应该让我知道什么“不起作用”:)Umbraco本身不执行其他重定向,我正在成功地使用此重写规则。我认为这要求您不要在urlRewriting.config中进行任何重写,这应该是您的web.config文件中的第一条重写规则(因为在此之后它将停止处理)。我们的umbraco.org是一个更好的讨论场所。除了您建议的配置文件外,两个配置文件中都没有重写。现在我怀疑我们安装的一个插件导致了无限循环。我正在慢慢地重建这个网站。我去那边。再次感谢。我在发布我的问题之前尝试了不同的重定向类型,但没有帮助。同样,重写规则在常规asp.net网站中已经起作用,但在Umbraco网站中不起作用。所以重写规则必须是正确的,对吗?因此必须使用Umbraco中的配置?您使用的是哪个版本的Umbraco?Hi-PTuckey,它是7.1.4不幸的是urlRewriting.net模块非常旧,非常糟糕。我们之所以保留它,是因为有些人无法安装IIS重写插件。如果可能的话,我总是建议使用IIS版本。@sebastiaan我不知道-我会更新我的答案。谢谢