Asp.net 将Azure网站中的非WWW重定向到WWW

Asp.net 将Azure网站中的非WWW重定向到WWW,asp.net,redirect,azure,Asp.net,Redirect,Azure,我有一个Godaddy的域名,还有一个Azure网站基础设施上的网站。我想要实现的是只使用我的域名的www版本。如果用户在浏览器中输入“example.com”,我希望他们被重定向到“www.example.com” 该网站正在托管一个ASP.NETMVC5应用程序,如果这有区别的话。如何配置此代码?将此代码添加到部分下 <rewrite> <rules> <rule name="Redirect to www"> <match url=".*" /

我有一个Godaddy的域名,还有一个Azure网站基础设施上的网站。我想要实现的是只使用我的域名的www版本。如果用户在浏览器中输入“example.com”,我希望他们被重定向到“www.example.com”


该网站正在托管一个ASP.NETMVC5应用程序,如果这有区别的话。如何配置此代码?

将此代码添加到
部分下

<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>

如果您想要真正的重定向(即当用户键入
example.com
时,浏览器中的地址会自动更改为
www.example.com
),那么您有两个选项:

  • 使用GoDaddy提供的转发功能(您可以在GoDaddy仪表板(域详细信息页面)中找到它)。通过这种方式,您可以将
    example.com
    指向一个GoDaddy IP,该IP会重定向到
    www.example.com
  • 在ASP.NET中编写一些代码,检测地址何时缺少“www”,然后重定向到
    www.example.com
  • 但是,如果您只想让键入
    example.com
    的用户获得与键入
    www.example.com
    的用户相同的内容,并且您不介意人们在地址栏中看到没有www的
    example.com
    ,请按以下步骤进行:

  • 获取与Azure网站关联的虚拟IP地址:从Azure管理门户单击网站,转到仪表板部分并单击管理域。您应该获得类似“配置记录时使用的IP地址:xxx.xxx.xxx.xxx”的内容
  • 转到GoDaddy,将A记录的“主机”设置为
    @
    ,并将“指向”设置为步骤1中找到的IP
  • 添加一条CNAME记录,将“主机”设置为
    awverify
    ,并将“指向”设置为azure网站的地址,前缀为
    awverify
    (例如
    awverify.mywebsite.azurewebsites.net
  • 添加一个CNAME记录,将“主机”设置为
    www
    ,并将“指向”设置为azure网站的地址(例如
    mywebsite.azurewebsites.net
  • 在GoDaddy中保存区域文件
  • 返回网站“管理域”部分的windows azure,将
    example.com
    www.example.com
    添加到域名列表中
  • 如果在步骤6中出现任何错误,只需等待几个小时,让DNS更改传播并重试


    这里的更多信息:

    我不喜欢使用negate=true的一般MatchAll,我更喜欢只捕获裸域并在匹配时重定向。这对Azure很有效,因为我只对单个域感兴趣,然后我就不必为localhost、localtest.me、子域等编写大量排除项

    以下是规则…只需将模式中的
    示例更改为您的域:

      <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>
    

    ASP.NET核心MVC中,将其添加到
    Startup.cs
    Configure()
    方法中

                app.UseRewriter(new RewriteOptions()
                    // redirect non www to www.
                    .AddRedirectToWwwPermanent()
    
                     // While we are at it, let's also redirect http to https.
                    .AddRedirectToHttpsPermanent()
                );
    

    这不是特定于azure网站的。请查找有关在IIS上将裸域重定向到www的问题,如。@SimonOpelt谢谢。我是web技术新手,不知道我不知道什么。非常感谢,我会尝试一下。这只是一个临时的302重定向吗?使用web.config中的规则进行perm 301重定向会更好或者SEO。你会怎么做?@EthanTowne我正在使用Azure网站的重写模块。除了修改web.config之外,不需要任何配置。这实际上不起作用。正确的结构是
    。你缺少
    元素。如果你将代码添加到web.config,你将在什么情况下破坏你的网站e是否应该添加此项?它将被添加到web.config的第节中。首先,请确保在服务器上正确安装了URLEwrite模块。谢谢,这在使用Uniregistry的Azure上运行得非常好。不清楚“添加子域”是什么意思在Azure说明中,但您的“awverify”示例澄清了这一点。我有一个覆盖两个域的SSL证书,但其中一个未解析。这应该是Azure网站的公认答案。