Назад | Перейти на главную страницу

Веб-сайт, размещенный в Azure, выдает ошибку 404, когда имени домена предшествует www

mydomain.com работает отлично.
www.mydomain.com дает 404 - File or directory not found.

Я не хочу, чтобы люди использовали www.mydomain.com вместо того mydomain.com, но я также не хочу, чтобы ошибка 404 отображалась в их глазах, если это произойдет.

Запись A в GoDaddy выглядит так:
Хост - Указывает на - TTL
@ - IP-адрес - 600 секунд

Как исправить проблему, чтобы при вводе пользователем www.mydomain.com они будут волшебным образом перенаправлены на mydomain.com?

Решение проблемы заключалось в том, чтобы оба доменных имени (mysite.com и www.mysite.com) явно были настроены в Azure как пользовательские домены.

Затем, чтобы использовать модуль перезаписи URL в IIS (уже установленный в Azure), добавив переписать раздел в файле Web.config:

<system.webServer>
<rewrite>
  <rules>
    <clear />
    <rule name="WWW Rewrite" stopProcessing="true" enabled="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>
</system.webServer>

Я считаю, что это НЕ задание DNS, вы можете сделать www как CNAME для mydomain.com но все же www будет отображаться в URL-адресе

Если вы используете Apache2 или любой веб-сервер, способный читать и выполнять файл .htaccess, вы можете использовать приведенный ниже код:

<IfModule mod_rewrite.c>

# Enable Rewrite Engine
# ------------------------------
RewriteEngine On
RewriteBase /

# Add or remove www.  Whichever you prefer.
# This one removes which seems to be the favourable choice these days.
# ------------------------------
RewriteCond %{HTTP_HOST} ^www.mydomain.com
RewriteRule (.*) http://mydomain.com/$1 [R=301,L]

</IfModule>