Перенаправление не-WWW на WWW на веб-сайте Azure

У меня есть домен с Godaddy и веб-сайт в инфраструктуре веб-сайтов Azure. То, что я хочу достичь, - это использовать только www-версию моего домена. Если пользователь вводит "example.com" в своем браузере, я хочу, чтобы они были перенаправлены на "www.example.com".

На сайте размещается приложение ASP.Net MVC 5, если это имеет значение. Как это настроить?

Ответ 1

добавить этот код в этот код в разделе <system.webServer>

<rewrite>
<rules>
<rule name="Redirect to www">
  <match url=".*" />
  <conditions logicalGrouping="MatchAny">
    <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" negate="true" />
  </conditions>
  <action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" redirectType="Permanent"/>
</rule>
</rules>
</rewrite>

Ответ 2

Если вы хотите перенаправить REAL (т.е. когда пользователь набирает example.com, то адрес в браузере автоматически изменяется на www.example.com), тогда у вас есть два варианта:

  • Использование функции переадресации, предлагаемой GoDaddy (вы можете найти ее на панели данных GoDaddy (страница сведений о домене). Таким образом вы можете указать example.com на IP-адрес GoDaddy, который отвечает перенаправлением на www.example.com
  • Напишите код ASP.NET, который обнаруживает, когда отсутствует адрес "www.". и затем перенаправление на www.example.com

Однако, если вы просто хотите, чтобы пользователи, которые набрали example.com, получили тот же контент, что и пользователи, набравшие www.example.com, и вы не возражаете против того, чтобы люди видели example.com без www в своей адресной строке, а затем выполните следующие действия:

  • Получите виртуальный IP-адрес, связанный с вашим сайтом Azure: от портала управления Azure нажмите на свой сайт, перейдите в раздел панели управления и нажмите "Управление доменами". Вы должны получить что-то вроде "IP-адрес, который следует использовать при настройке записей A: xxx.xxx.xxx.xxx".
  • Перейдите в GoDaddy и установите запись A с "Host" на @ и "Points to" установите IP-адрес, найденный на шаге 1
  • Добавьте запись CNAME с установкой "Host" на awverify и "Points to" на адрес вашего лазурного сайта с префиксом awverify (например, awverify.mywebsite.azurewebsites.net)
  • Добавьте запись CNAME с параметром "Хост", установленным в www и "Точки", чтобы установить адрес вашего лазурного сайта (например, mywebsite.azurewebsites.net)
  • Сохранить файл зоны в GoDaddy
  • Вернитесь к окнам azure в разделе "Управление доменами" на своем веб-сайте и добавьте как example.com, так и www.example.com в список доменных имен.

Если на шаге 6 вы получите какую-либо ошибку, подождите несколько часов, чтобы DNS-изменения распространялись и повторялись.

Дополнительная информация здесь: https://www.windowsazure.com/en-us/documentation/articles/web-sites-custom-domain-name/

Ответ 3

Вместо общего MatchAll с negate = true, я предпочитаю перехватывать только незащищенный домен и перенаправлять, если это совпадение. Это хорошо работает для Azure, так как меня интересует только один домен, и тогда мне не нужно писать кучу исключений для localhost, localtest.me, поддоменов и т.д.

Вот правило... просто измените example в шаблоне для вашего домена:

  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Redirect To WWW" enabled="true" stopProcessing="true">
            <match url=".*" />
            <conditions logicalGrouping="MatchAny">
              <add input="{HTTP_HOST}" pattern="^example\.com$" />
            </conditions>
            <action type="Redirect" url="http://www.{HTTP_HOST}{URL}" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

Ответ 4

Будет ли это просто временным перенаправлением 302? Перенаправление perm 301 с использованием правил в web.config было бы лучше для SEO.

Ответ 5

В ASP.NET Core MVC добавьте это в метод Startup.cs Configure().

            app.UseRewriter(new RewriteOptions()
                // redirect non www to www.
                .AddRedirectToWwwPermanent()

                 // While we are at it, let also redirect http to https.
                .AddRedirectToHttpsPermanent()
            );