【发布时间】:2017-11-29 21:17:56
【问题描述】:
non-www 到 www.sitedomain.com 的重定向规则有效,但 CDN 域请求的免责条款(add input=" {HTTP_HOST}" pattern="cdnprefix.azureedge.net" negate="true") 被忽略,cdn 请求也重定向到 www.sitedomain.com。你能帮我修改重写部分来解决这个问题吗?
<rule name="Redirect non-www to www.sitedomain.com" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<!-- domain is not canonical -->
<add input="{HTTP_HOST}" matchType="Pattern" ignoreCase="true" pattern="^sitedomain\.com$" />
<add input="{HTTP_HOST}" pattern="^www\.sitedomain\.com$" negate="true" />
<add input="{HTTP_HOST}" pattern="cdnprefix\.azureedge\.net" negate="true" />
</conditions>
<action type="Redirect" url="https://www.sitedomain.com{HTTP_URL}" redirectType="Permanent" appendQueryString="false" />
</rule>
加上有效的 HTTP -> httpS 重定向规则(拆分以简化 CDN 豁免规则的解决方案),它看起来像这样:
<rule name="Redirect to https">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="Off" ignoreCase="true" />
<add input="{REQUEST_METHOD}" pattern="^get$|^head$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
<rule name="Redirect non-www to www.sitedomain.com" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<!-- domain is not canonical -->
<add input="{HTTP_HOST}" matchType="Pattern" ignoreCase="true" pattern="^sitedomain\.com$" />
<add input="{HTTP_HOST}" pattern="^www\.sitedomain\.com$" negate="true" />
<add input="{HTTP_HOST}" pattern="cdnprefix\.azureedge\.net" negate="true" />
</conditions>
<action type="Redirect" url="https://www.sitedomain.com{HTTP_URL}" redirectType="Permanent" appendQueryString="false" />
</rule>
【问题讨论】:
标签: asp.net-mvc azure iis web-config url-redirection