Я хотел бы перенаправить весь www трафик к non-www трафику
я скопировал это в свой web.config
/ /
на это сообщение
но я получил 500 внутренних ошибок сервера.
Вы можете рассмотреть другой подход:
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 перемещен навсегда.
если вы скопировали это напрямую, то у вас неправильная разметка в вашем 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>
</rules>
</rewrite>
<system.webServer>
Строка, в которой говорится
<system.webServer> / <rewrite> / <rules>
говорит о том, что вам нужно поместить конфиг в это место в вашем web.Config.
- это одна из секций configSections вашего файла web.Config.
Убедитесь, что у вас сначала установлен модуль URL Rewrite для IIS7
На странице выше говорится о перенаправлении HTTP на HTTPS, но концепция все еще применима для WWW на не WWW
Также здесь есть подробная информация о том, как все это работает вместе.