Azure 网站 301 重定向 - 我应该把它放在哪里?

Posted

技术标签:

【中文标题】Azure 网站 301 重定向 - 我应该把它放在哪里?【英文标题】:Azure Website 301 Redirect - Where Do I Put It? 【发布时间】:2013-08-01 20:39:31 【问题描述】:

我想将我的一些其他域定向到我在 Windows Azure 网站上托管的主域。

(为了那些发现使用 CNAME 和 DNS 有点“模糊”的人(就像我所做的那样),我将布置细节。)

我的域www.myDomain.com 正确解析。

我现在想点www.myOtherDomain.com to www.myDomain.com

在我的注册商处,我创建了一个 CNAME 指向www.myOtherDomain.com to myInternalAzureSite.azurewebsite.net 然后在 Azure 网站域管理器工具中成功配置。

现在,当我在浏览器中输入www.myOtherDomain.com 时,我会在www.myDomain.com 获得正确的网页,但是,浏览器中的地址仍然是www.myOtherDomain.com,而不是所希望的www.myDomain.com

我了解实现此目的的两种最理想的方法是:

    转发myOtherDomain.com(在某些注册商处收费) 执行 301 永久重定向

如果我所有这些都正确的话,我已经找到了很多关于 HOW 的建议来进行 301 重定向,但是,我似乎无法弄清楚 WHERE 到底是什么把重定向?

【问题讨论】:

【参考方案1】:

Windows Azure 网站运行 IIS。您可以使用 URL 重写来创建将一个 URL 重写为另一个 URL 的规则。

说明:

    在 Windows Azure 中创建网站。

    在“缩放”部分中,选择共享或标准网站模式并保存更改。

    在配置部分的域名组中,添加旧域名(或多个名称)和新域名并保存更改。

    在旧域和新域的域注册商或 DNS 提供商中,更改 DNS 记录以指向新的 Windows Azure 网站。使用“CNAME(别名)”记录并将其指向 Windows Azure 上的网站域,例如:“mywebsite.azurewebsites.net”。

    将新网站的内容上传到 Windows Azure。

    在新网站的根目录下,创建一个名为Web.config 的文件,内容如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <system.webServer>
            <rewrite>
                <rules>
                    <rule name="Redirect old-domain to new-domain" stopProcessing="true">
                        <match url=".*" />
                        <conditions>
                            <add input="HTTP_HOST" pattern="^www.old-domain.com$" />
                        </conditions>
                        <action type="Redirect" url="http://www.new-domain.com/R:0" redirectType="Permanent" />
                    </rule>              
                </rules>
            </rewrite>
        </system.webServer>
    </configuration>
    

    验证对“http://www.old-domain.com/path?query”的任何请求都将收到“301 Moved Permanently”响应,其中包含“http://www.new-domain.com/path?query”的 Location 标头。

有关文档,请参阅Using the URL Rewrite Module。

例如参考Redirect to new domain after rebranding with IIS Url Rewrite Module和IIS URL Rewrite – Redirect multiple domain names to one。

【讨论】:

感谢@Fernando,就我而言,myOtherDomain.com 从来没有站点,它只是主站点的 .net、.org、misspellings.com 等。 没问题,我针对这种情况调整了答案。在这种情况下,您为这个其他域创建一个网站,并将重定向规则放在这个网站中,重定向到目标域。 费尔南多,对不起我的无知,但我就在那儿。要重定向的域的网站可以(或应该)是目标网站吗?例如,myOldDomain.com 指向 newDomain.com,perm 是否在 newDomain.com 的根 web.config 中重定向到那里? 这两种方法都可以,但将 web.config 放在目标网站中可能会更简单。我已经用分步说明更新了我的答案。 费尔南多太棒了!感谢您详细介绍,这篇文章将帮助很多人。一旦您看到从 DNS 到 web.config 的整个解决方案,它就非常基础,但在您完成之前,它有点令人费解。当您搜索 301 重定向时,返回的只是直接与重写规则有关的所有帮助。这有帮助,谢谢!【参考方案2】:

无需上传 web.config 文件,您可以通过 Azure 界面访问该文件。

打开应用服务的设置窗格,然后单击左侧菜单底部的开发工具部分中的应用服务编辑器(预览)。

单击“前往”以在新选项卡中打开编辑器。您将在左侧看到 web.config 文件。单击它可在主窗格中进行编辑。

一句警告 - 此编辑器在您键入时自动保存!我相信无论如何我们都会这样做,但我建议您在编辑器中准备代码并将其粘贴。

我能够添加一个部分,而无需手动重新启动应用服务。

【讨论】:

【参考方案3】:

您也可以通过将此代码放在web.config 文件中的configuration 节点下进行重定向:

<configuration>
  <location path="oldpage1.php">
    <system.webServer>
      <httpRedirect enabled="true" destination="http://domain.com/newpage1" httpResponseStatus="Permanent" />
    </system.webServer>
  </location>
  <location path="oldpage2.php">
    <system.webServer>
      <httpRedirect enabled="true" destination="http://domain.com/newpage2" httpResponseStatus="Permanent" />
    </system.webServer>
  </location>
</configuration>

【讨论】:

对我没有用,它显示我的旧页面不再存在的 HTTP 404。知道可能是什么吗? 您确定在位置标签的“路径”属性中包含正确的位置吗? 我犯了一个错误,我试图使用此代码来重定向特定目录的所有请求,而不是单个文件。我解决了我在 system.webserver 中使用 httRedirect 标记更改 web.config 的问题。【参考方案4】:

我采用了一种更简单的方法,只是通过“自定义域”菜单将额外的必需域添加到 Azure 应用程序服务 - 根据下面的屏幕截图。根本不需要接触主要网站的 web.config 文件。不需要任何明确的 301 重定向。在自定义域页面中,只需分配域,通过上传您的 HTTPS 证书添加 SSL 绑定 - 点击网站!

【讨论】:

但是现在你削弱了你的 SEO 并且必须为所有域创建证书。似乎还有更多工作。 如果您使用旧域浏览,这将不会重定向到新域。

以上是关于Azure 网站 301 重定向 - 我应该把它放在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

Azure web.config 永久重定向并获得 307 状态码而不是 301

如何将网站 301 永久重定向到另一个网站和永久链接的子类别(使用 .htaccess)

htaccess 301 重定向问题

使用 PHP 进行 301 或 302 重定向

301将非www重定向到www

伪静态网址301重定向到静态网址怎么实现