Перенаправление не-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()
);