当域名前面带有 www 时,Azure 托管网站会出现 404 错误

当域名前面带有 www 时,Azure 托管网站会出现 404 错误

我的域名工作正常。
www.mydomain.com给出404 - File or directory not found.

我不希望人们使用www.mydomain.com代替我的域名,但如果他们这样做的话,我也不希望他们看到 404 错误。

GoDaddy 的 A 记录如下:
主机 - 指向 - TTL
@ - IP 地址 - 600 秒

如何修复此问题,以便当用户输入www.mydomain.com他们将被神奇地重定向到我的域名

答案1

解决该问题的方法是将两个域名(mysite.com 和 www.mysite.com)在 Azure 中明确设置为自定义域。

然后通过添加来使用 IIS 中的 URL 重写模块(已安装在 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>

答案2

我相信这是不是DNS 作业,您可以将 www 设为别名记录为了我的域名但 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>

相关内容