【问题标题】:Windows Azure: How to 301 non-www url to www for a domainWindows Azure:如何 301 非 www url 到 www 的域
【发布时间】:2011-10-08 11:42:24
【问题描述】:

我最近通过 DreamHost 门户部署了一个 Windows Azure 应用程序并配置了我的域的 DNS。现在我的网站可以通过http://www.coziie.com 访问,但不能通过非www 地址访问。

我在一篇文章中读到我应该在 DNS 设置中添加一条 A 记录并指向 Windows Azure 的虚拟 IP。如何获取我的 Windows Azure 部署的虚拟 IP?

或者有没有更好的方法将所有非www url 301重定向到www?

已解决:我可以通过在 DreamHost DNS 设置中简单地配置网站重定向设置来解决此问题。 http://coziie.com 到 www.coziie.com 的简单 301 重定向解决了这个问题。

【问题讨论】:

  • 如果你不想自己处理这个问题,你可以使用像DNS Azure这样纯粹存在的服务来解决这个问题。当然要收费。

标签: asp.net windows asp.net-mvc-3 azure dns


【解决方案1】:

您在这里谈论的是两个不同的问题。

首先是设置 DNS 记录,以便您的未规范化 url 工作。二是如果网站被访问,重定向url。

更新我已经从这里删除了之前对 CNAME 的建议,因为我之前没有意识到您不能将根域设置为 CNAME 记录。似乎由于 Azure 的 ip 限制,您必须将根域记录指向非天蓝色、asp.net 托管,然后放置 301 重定向(例如我的回复下方的那个)以将其转发到 Azure域(www 域)。

当您有 http://coziie.com/ 指向您的网站并提供页面时,是时候解决此问题了,因为 Google 可能会感到困惑,认为它是两个不同的网站,然后在两者之间稀释您的页面排名。

诀窍是设置 301 重定向。我相信 url 重写工具最初是作为 IIS7 的插件,但现在包含在其中?您可能需要对此进行快速搜索。

无论如何,这就是我在安装了官方 url 重写扩展的 IIS7 服务器上执行此操作的方式(这在您的 web.config 中):

  <system.webServer>
    <rewrite>
      <rules>
        <clear/>
        <rule name="WWW Rewrite" enabled="true">
          <match url="(.*)"/>
          <conditions>
            <add input="{HTTP_HOST}" negate="true" pattern="^www\."/>
          </conditions>
          <action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" appendQueryString="true" redirectType="Permanent"/>
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

Intellisense 会抱怨它不是一个可识别的元素,而这只是您在编辑文件时的外观问题。

【讨论】:

  • rtpHarry,似乎 Azure 上站点的 IP 地址不会是静态的。 MSDN 文章link 说“VIP 与部署相关联,而不是托管服务。删除部署后,与该部署相关联的 VIP 将返回到池中并相应地重新分配,即使托管服务未删除。Windows Azure 目前不支持客户在部署生命周期之外保留 VIP。"
  • 由于IP地址不是静态的(根据我的理解)如何创建A记录?
  • 好吧,抱歉,您似乎需要设置 CNAME 而不是 A 记录。这基本上是相同的,只是您将CNAME 指向域而不是IP。查看您的记录,这表明您为 www 所做的事情:www.coziie.com. 14400 IN CNAME coziie.cloudapp.net. 我会为您的非 www 记录设置相同的 CNAME
  • 我的 DNS 设置面板显示错误“CNAME 记录只能用于子域。”当我尝试为 coziie.com 创建 CNAME 并将其指向 coziie.cloudapp.net 时。我错过了什么吗? CNAME 是否仅用于子域?
  • 我没有意识到这是一个限制,但似乎youre right。做一个bit of research 似乎天蓝色不支持这个。
【解决方案2】:

通过查看门户(阅读部署详细信息)或简单地 ping 您的 .cloudapp.net 地址即可轻松获得 VIP 地址。您可以设置 A 记录,但您必须准备好更新该记录,以防您删除部署。删除部署后,VIP 地址将返回到池中,并且几乎可以保证您将在下一次部署时获得新的 VIP 地址。

您可以使用升级功能而不是新部署来维护您的 VIP 地址。这有一些限制,但它适用于广义上不会更改服务定义的更新。

我们曾经说过,即使您进行了更新,VIP 地址也无法得到保证,但 MS 已经用更强有力的语言来保证。 See here.

【讨论】:

  • VIP 地址看起来不是一个好的选择。在每次部署时,它都会强制我们更新 DNS 记录。如果我们错过更新 DNS,我们最终会收到大量损坏的 url。
  • 如果您想要 A 记录,这是您唯一的选择。您可以从一些 DNS 运营商(如 Godaddy)进行转发,但这将转发到 CNAME。您对 domain.com(A 记录)的唯一希望就是我现在所说的。
【解决方案3】:

CNAMES 仅适用于子域,例如 sub.example.com 或 www.example.com,换句话说,您不能为 example.com 注册 CNAME。如果您的域提供商支持它,您可以创建从 example.com 到 www.example.com 的重定向,然后为 www.example.com 创建 CNAME 记录,CNAME 将匹配 www.example.com 与 example.cloudapp.net。我的域名提供商有一个网络控制台,我可以轻松地做到这一点,也许你的也有?

【讨论】:

    猜你喜欢
    • 2011-04-01
    • 2018-05-01
    • 2014-12-07
    • 2014-08-29
    • 2017-05-03
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多