请教两条ASP.NET重写规则的具体功能
IIS URL重写规则功能说明
以下是你的ASP.NET MVC应用中rewrite.config里的两条重写规则:
<rule name="CanonicalHostNameRule1" enabled="true" stopProcessing="true"> <match url="(.*)" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> <add input="{HTTP_HOST}" pattern="^www\.example\.com$" negate="true" /> </conditions> <action type="Redirect" url="http://www.example.com/{R:1}" redirectType="Permanent" /> </rule> <rule name="HTTP to HTTPS redirection" enabled="true" stopProcessing="true"> <match url="(.*)" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> <add input="{HTTPS}" pattern="off" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> </rule>
规则1:CanonicalHostNameRule1
这是规范主机名的301永久重定向规则,核心作用是统一域名访问入口:
- 触发条件:当请求的域名(
{HTTP_HOST})不是www.example.com时,比如用户访问example.com、其他子域名等非指定域名 - 执行动作:将请求永久重定向到
http://www.example.com/{R:1},其中{R:1}会完整保留原请求的URL路径(比如访问http://example.com/about,会跳转到http://www.example.com/about) stopProcessing="true"表示这条规则触发后,不再执行后续其他规则(但重定向是浏览器重新发起请求,新请求会再次走完整的规则匹配流程)
规则2:HTTP to HTTPS redirection
这是HTTP转HTTPS的301永久重定向规则,和你的猜测完全一致:
- 触发条件:当请求使用HTTP协议(
{HTTPS}值为off)时,无论访问的域名是什么 - 执行动作:将请求永久重定向到
https://{HTTP_HOST}/{R:1},保留原域名和路径。比如访问http://www.example.com/blah,会直接跳转到https://www.example.com/blah;如果用户先访问http://example.com/blah,会先被第一条规则跳转到http://www.example.com/blah,浏览器发起新请求后,再被这条规则跳转到https://www.example.com/blah
内容的提问来源于stack exchange,提问作者napsebefya
相关产品推荐
相关产品推荐

