Вы можете использовать Модуль перезаписи URL IIS 7
Вы можете настроить его из IIS или просто поместить в web.config
следующее под <system.webServer>
:
с www на не-www
<rewrite>
<rules>
<rule name="Canonical" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www[.](.+)" />
</conditions>
<action type="Redirect" url="http://{C:1}/{R:0}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
В качестве альтернативы вы можете сделать это перенаправление на global.asax.cs
:
protected void Application_BeginRequest(object sender, EventArgs ev)
{
if (Request.Url.Host.StartsWith("www", StringComparison.InvariantCultureIgnoreCase))
{
Response.Clear();
Response.AddHeader("Location",
String.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Host.Substring(4), Request.Url.PathAndQuery)
);
Response.StatusCode = 301;
Response.End();
}
}
Но помните, что сказал @Sam, смотрите здесь для получения дополнительной информации .
без www на www
<rewrite>
<rules>
<rule name="Canonical" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^([a-z]+[.]net)$" />
</conditions>
<action type="Redirect" url="http://www.{C:0}/{R:0}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
Создайте шаблон регулярного выражения, соответствующий вашему хосту, и используйте {C:0}
1, 2, ..., N
, чтобы получить соответствующие группы.