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