Windows Azure: 如何将域名的非www网址301重定向到www网址

10

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

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

或者是否有更好的方法将所有非www网址301重定向到www?

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


如果您不想自己处理这个问题,可以使用像DNS Azure这样的服务,它存在的唯一目的就是解决这个问题。当然需要支付费用。 - knightpfhor
3个回答

15

你提到了两个不同的问题。

第一个问题是设置DNS记录以使得未规范化的网址起作用。第二个问题是在访问该站点时重定向该网址。

更新:我已从这里删除有关CNAME的先前建议,因为我之前没有意识到您无法将根域设置为CNAME记录。似乎由于Azure的IP限制,您将不得不将根域记录指向非Azure 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>

智能感知会抱怨它不是一个被识别的元素,但这只是在您编辑文件时的一个外观问题。


rtpHarry,似乎是Azure上某个站点的IP地址不会是静态的。MSDN文章链接表示:“VIP与部署相关联而不是托管服务。当删除部署时,与该部署相关联的VIP将返回池并相应地重新分配,即使未删除托管服务。目前,Windows Azure不支持客户在部署的生命周期之外保留VIP。” - Gopinath
好的,抱歉看起来你需要设置一个CNAME而不是一个A记录。这基本上是相同的,只是你将CNAME指向一个域名而不是IP地址。查看你的记录,它显示你已经为www做了这件事:www.coziie.com. 14400 IN CNAME coziie.cloudapp.net. 我会为你的非www记录设置相同的CNAME - rtpHarry
当我尝试为coziie.com创建CNAME并将其指向coziie.cloudapp.net时,我的DNS设置面板显示了错误“CNAME记录只能用于子域名。” 我错过了什么吗? CNAME只适用于子域名吗? - Gopinath
我没有意识到这是一个限制,但看起来你是对的。经过一些研究,似乎Azure不支持此功能。 - rtpHarry
我更新了我的答案,因为stackoverflow不喜欢我们在评论中讨论这么多。 - rtpHarry
显示剩余2条评论

0

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

您可以使用升级功能而不是新部署来维护您的VIP地址。虽然有一些限制,但它适用于未在服务定义方面做出广泛更改的更新。

我们曾经说过,即使您进行更新,也不能保证VIP地址,但MS已经回归了更强硬的语言来保证在这里


VIP地址似乎不是一个好的选择。每次部署时,它都会强制我们更新DNS记录。如果我们忘记更新DNS,就会导致大量的URL出现故障。 - Gopinath
如果您想要一个A记录,这是您唯一的选择。您可以从某些DNS运营商(如Godaddy)进行转发,但那将会转发到CNAME。您对于domain.com(A记录)的唯一希望就是我现在所说的。 - dunnry

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接