一尘不染

asp.net mvc:如何将非www重定向到www,反之亦然

c#

我想将所有www流量重定向到非www流量

我已经将此复制到我的web.config

<system.webServer> / <rewrite> / <rules>

<rule name="Remove WWW prefix" > 
<match url="(.*)" ignoreCase="true" /> 
<conditions> 
<add input="{HTTP_HOST}" pattern="^www\.domain\.com" /> 
</conditions> 
<action type="Redirect" url="http://domain.com/{R:1}" 
    redirectType="Permanent" /> 
</rule>

根据这篇文章

如何使用“ www” URL重定向到没有“ www”
URL的重定向,反之亦然?

但我收到500个内部服务器错误。


阅读 183

收藏
2020-05-19

共1个答案

一尘不染

您可能会考虑另一种方法:

protected void Application_BeginRequest (object sender, EventArgs e)
{
   if (!Request.Url.Host.StartsWith ("www") && !Request.Url.IsLoopback)
   {
      UriBuilder builder = new UriBuilder (Request.Url);
      builder.Host = "www." + Request.Url.Host;
      Response.Redirect (builder.ToString (), true);
   }
}

但是,这将执行302重定向,因此建议进行一些调整:

protected void Application_BeginRequest (object sender, EventArgs e)
{
   if (!Request.Url.Host.StartsWith ("www") && !Request.Url.IsLoopback)
   {
      UriBuilder builder = new UriBuilder (Request.Url);
      builder.Host = "www." + Request.Url.Host;
      Response.StatusCode = 301;
      Response.AddHeader ("Location", builder.ToString ());
      Response.End ();
   }
}

这将返回“ 301已永久移动”。

2020-05-19