【问题标题】:Redirecting non-WWW to WWW in an Azure Website在 Azure 网站中将非 WWW 重定向到 WWW
【发布时间】:2014-03-03 08:59:03
【问题描述】:

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

如果有影响的话,该站点将托管一个 ASP.Net MVC 5 应用程序。我该如何配置?

【问题讨论】:

  • 这不是 azure 网站特定的。查找有关将裸域重定向到 IIS 上的 www 的问题,例如 this one
  • @SimonOpelt 谢谢。我是网络技术的新手,还不知道我不知道什么。非常感谢,我会试一试。
  • 这只是临时的 302 重定向吗?使用 web.config 中的规则进行烫发 301 重定向对于 SEO 会更好。
  • 你会怎么做?

标签: asp.net redirect azure


【解决方案1】:

将此代码添加到<system.webServer>部分下

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

【讨论】:

  • @EthanTowne 我正在为 Azure 网站使用重写模块。除了修改 web.config 之外,无需进行任何配置。
  • 这实际上不起作用。正确的结构是&lt;rewrite&gt;&lt;rules&gt;&lt;rule name="Redirect to www"&gt;。您缺少 &lt;rules&gt; 元素。如果您将代码添加到 Web.Config,您将破坏您的网站
  • 这应该添加到什么文件中?
  • 它将被添加到 部分下的 web.config 中。首先确保您在服务器上正确安装了 UrlRewrite 模块
  • 我复制了您的代码,但它没有重定向到确切的 URL,例如 https://[domain].com/blog 正在重定向到 [domain].com。如何通过仅在当前 URL 中添加 www 来重定向?
【解决方案2】:

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

  1. 使用 GoDaddy 提供的转发功能(您可以在 GoDaddy 仪表板(域详细信息页面)中找到它。通过这种方式,您可以将 example.com 指向 GoDaddy IP,该 IP 会重定向到 www.example.com
  2. 在 ASP.NET 中编写一些代码来检测地址何时丢失“www”。然后重定向到www.example.com

但是,如果您只是希望输入 example.com 的用户获得与输入 www.example.com 的用户相同的内容,并且您不介意人们在地址栏中看到 example.com 而没有 www,那么请执行以下操作:

  1. 获取与您的 Azure 网站关联的虚拟 IP 地址:从 Azure 管理门户单击您的网站,转到仪表板部分并单击管理域。您应该会看到类似“配置 A 记录时使用的 IP 地址:xxx.xxx.xxx.xxx”。
  2. 转到 GoDaddy 并将“主机”设置为 @ 并将“指向”设置为在步骤 1 中找到的 IP 的 A 记录
  3. 添加一条 CNAME 记录,其中“主机”设置为 awverify,“指向”设置为您的 azure 网站地址,前缀为 awverify(例如 awverify.mywebsite.azurewebsites.net
  4. 添加一条 CNAME 记录,其中“主机”设置为 www,“指向”设置为您的 azure 网站的地址(例如 mywebsite.azurewebsites.net
  5. 在 GoDaddy 中保存区域文件
  6. 在您网站的“管理域”部分返回 Windows azure,并将 example.comwww.example.com 添加到域名列表中。

如果您在第 6 步遇到任何错误,只需等待几个小时,让 DNS 更改传播并重试。

更多信息在这里:https://www.windowsazure.com/en-us/documentation/articles/web-sites-custom-domain-name/

【讨论】:

  • 谢谢,这在 Azure 上与 Uniregistry 完美配合。尚不清楚 Azure 说明中“添加子域”的含义,但您的“awverify”示例清除了这一点。我有一个涵盖两个域的 SSL 证书,但一个没有解析。这应该是 Azure 网站公认的答案。
【解决方案3】:

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

这是规则...只需将模式中的 example 更改为您的域:

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

【讨论】:

    【解决方案4】:

    ASP.NET Core 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()
                );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 2020-12-28
      • 1970-01-01
      相关资源
      最近更新 更多