asp.net mvc: Как перенаправить не www к www и наоборот

Я хотел бы перенаправить весь www трафик к non-www трафику

я скопировал это в свой web.config

 /  /  

 
 
 
 
 
 
 

на это сообщение

Как перенаправить с "www" URL к без "www" URL или наоборот?

но я получил 500 внутренних ошибок сервера.

43
задан Community 23 May 2017 в 11:53
поделиться

2 ответа

Вы можете рассмотреть другой подход:

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 перемещен навсегда.

76
ответ дан 26 November 2019 в 22:39
поделиться

если вы скопировали это напрямую, то у вас неправильная разметка в вашем 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.

EDIT:

Убедитесь, что у вас сначала установлен модуль URL Rewrite для IIS7

На странице выше говорится о перенаправлении HTTP на HTTPS, но концепция все еще применима для WWW на не WWW

Также здесь есть подробная информация о том, как все это работает вместе.

12
ответ дан 26 November 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: