在我们的网站上,某些部分或页面处理敏感的用户或帐户信息。我想强制用户在HTTPS下浏览这些页面。而其他具有公共内容的页面应该在HTTP下可用。我打算在IIS上安装url Rewrite模块并编写规则来实现这一点。我不知道如何在web.config中编写规则以进行重定向。
服务器:IIS 7.5
SSL下的网页示例:
mywebsite.com.au/login
mywebsite.com.au/login /
不属于上面指定的网址格式的所有网页都应仅在http下浏览。
答案 0 :(得分:1)
Umbraco已经附带了一个UrlRewriging.net组件。检查你的config
文件夹,你会发现urlrewriting.config,这是实现你所追求的目标的一种潜在方式。以下是可能的规则(未经测试)的示例:
<add name="ForceSSLLogin"
virtualUrl="^http://(.*)/login(.*)"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="https://$1/login$2"
redirect="Domain"
ignoreCase="true" />
<add name="ForceSSLMembers"
virtualUrl="^http://(.*)/member(.*)"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="https://$1/member$2"
redirect="Domain"
ignoreCase="true" />
我不太喜欢这个解决方案,因为如果有人更改了会员区域页面的名称,则网址重写将不再有效。
你不知道你在使用什么版本的Umbraco,但实际上更好的是尝试这样的套餐:
HTTPS重定向
HTTPS Redirect提供了一种基于文档类型(别名),节点ID或模板别名将URL从HTTP切换到HTTPS(SSL)的简单机制。
https://our.umbraco.org/projects/website-utilities/https-redirect
答案 1 :(得分:0)
以下是为实现http-&gt; https和https-&gt; http重定向而实施的重写规则。请注意,在http-&gt; https重定向上,您还必须将css,js和图像文件的请求从http重定向到https,否则浏览器可能拒绝执行这些文件。
You can also check the discussion on IIS forum.
<rewrite>
<rules>
<rule name="HTTPS to HTTP redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="ON" />
<add input="{URL}" pattern="^/login" negate="true" />
<add input="{URL}" pattern="^/member" negate="true" />
<add input="{URL}" pattern="^/(.*)(.js|.css|.png|.jpg|.woff)" negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="http://{HTTP_HOST}/{R:1}" />
</rule>
<rule name="HTTP to HTTPS redirect login" stopProcessing="true">
<match url="^login" />
<conditions>
<add input="{HTTPS}" pattern="OFF" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/login/" />
</rule>
<rule name="HTTP to HTTPS redirect member" stopProcessing="true">
<match url="^member/(.*)" />
<conditions>
<add input="{HTTPS}" pattern="OFF" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/member/{R:1}" />
</rule>
<rule name="HTTP to HTTPS redirect resources" stopProcessing="true">
<match url="http://(.*)(.css|.js|.png|.jpg|.woff)" />
<conditions>
<add input="{HTTPS}" pattern="ON" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}{R:2}" />
</rule>
</rules>
</rewrite>