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