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

我有以下重写规则,在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>

所以当我们访问http ://{domain}/aboutus时,其中一个页面将重定向到https ://{domain}/aboutus 。 现在在Umbraco网站中放入相同的重写规则会导致无限循环。 我们对Umbraco网站没有任何其他重写规则。 这导致我认为Umbraco有点劫持从http到https的路由并导致无限循环。 我们缺少什么?


由于你的url正则表达式不会过滤输入( <match url="(.*)" /> ),你应该在代码中使用redirectType="Permanent"参数:

更多信息可以在这里找到:
添加Url重写规则

值得注意的一件事是,默认情况下,重定向是302重定向,如果你想301重定向你需要添加以下内容:
redirectMode="Permanent"
您可以在其网站上找到URL重写组件的完整说明:https://github.com/aspnetde/UrlRewritingNet


我建议使用以下规则:

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

一个可能的解决方案是使用Umbraco重写模块而不是IIS重写。

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

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

这条规则应该放在<rewrites>部分。

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

链接地址: http://www.djcxy.com/p/82995.html

上一篇: Umbraco https rewrite rule causes an infinite loop

下一篇: ColdFusion cfstatic includes all CSS files