重定向HTTPS WWW到https非在IIS
问题描述:
<rule name="rd" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^test\.com$" negate="true" />
<add input="{HTTP_HOST}" pattern="^www.\test\.net$" negate="true" />
</conditions>
<action type="Redirect" url="https://test.com/{R:0}" redirectType="Permanent" />
</rule>
此代码的工作WWW:重定向HTTPS WWW到https非在IIS
http://www.test.com => https://test.com
http://www.test.net=> https://test.com
但不工作时,网址为:
https://www.test.com => https://test.com
https://www.test.net => https://test.com
有什么问题?
感谢FOT帮助
答
我知道你说你想这样做在IIS,但如果你能在应用程序中编辑Global.asax文件,你可以这样来做。
protected void Application_BeginRequest(object sender, EventArgs e)
{
#if !DEBUG
string HTTPhost = Request.ServerVariables["HTTP_HOST"];
string domainName = "test";
//assuming that the app will only be reached via .COM or .NET
string topLevel = HTTPhost.Split('.').LastOrDefault();
//compare to make sure it only matches the root name with no trailing subdomain
//or to redirect to secure url if unsecured
if ((!HTTPhost.Split('.').FirstOrDefault().Equals(domainName, StringComparison.InvariantCultureIgnoreCase))
|| (!HttpContext.Current.Request.IsSecureConnection))
{
Response.RedirectPermanent(
"https://"
+ domainName
+ '.'
+ topLevel
+ HttpContext.Current.Request.RawUrl);
//RawUrl means any url information after the domain
}
#endif
}
如果你的条件之一是' ',它为什么会起作用? –
haim770
当url已经使用HTTPS时,整个规则根本就不适用 – haim770
我写错了,编辑过的帖子 – Ali