对于我们的一个项目,我们正在对网站名称、徽标等进行重新品牌化......
因此,我们需要将301 Moved Permenantly
所有用户从旧域重定向到新域。使用 IIS7,这非常简单。我们只需创建一个新网站,将所有流量重定向到主机头域...到新域。
但这样就失去了他们原来的目的地资源。
eg.
Old Domain: www.OldDomain.com
New Domain: www.NewDomain.com
User: www.OldDomain.com/user/PureKrome -> 301 --> www.newDomain.com
注意它是如何进入新域但没有进入 /user/PureKrome 的吗?
我该怎么做才能让它转到新域并保留原始资源请求?我猜 IIS7 的 URL-ReWriter 可能会有帮助?
另外,如果我想这样做会发生什么……
CurrentDomain 1: Domain.com
CorrectDomain 1: www.Domain.com
CurrentDomain 2: AnotherDomain.com
CorrectDomain 2: www.AnotherDomain.com
是否也可以在同一个 IIS 网站中拥有这些?因此,任何指向 domain.com 的 URL 都将 301 转到 www.domain.com
现在我正在创建 2 个 IIS 网站,并使用 301 硬编码(这仍然意味着我也丢失了原始资源请求)。
帮助!
答案1
RuslanY 的博客有很棒的帖子描述了如何使用 IIS 重写器执行此操作。
我将引用他的第 3 条建议:-
很多时候,你可能有一个 IIS 网站使用几个不同的主机名。最常见的例子是,一个网站可以通过 http://www.yoursitename.com并通过 http://您的网站名称.com。或者,也许您最近将域名从 oldsitename.com 更改为 newsitename.com,并且希望访问者在将链接添加到您的网站时使用新域名。一个非常简单的重定向规则将解决此问题:view plaincopy to clipboardprint?
<rule name="Canonical Host Name" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" negate="true" pattern="^ruslany\.net$" />
</conditions>
<action type="Redirect" url="http://ruslany.net/{R:1}"
redirectType="Permanent" />
</rule>
要查看其工作原理的示例,请尝试浏览 http://www.ruslany.net/2008/10/aspnet-postbacks-and-url-rewriting/。您将在浏览器的地址栏中看到域名中的“www”被删除。
答案2
这是一个 URL 重写问题。
如果您使用的是 Apache,则可以将规则放入 .htaccess 文件中。IIS 用户必须购买并安装 ISAPIRewrite ISAPI 模块(尽管有一个评估版本允许您在每个 IIS 实例上运行一个站点),该模块可解释 .htaccess 文件。
答案3
实际上,您需要一个 http 模块来实现这一点。您可以读取 http 模块中的 URL 并保留路径,只有当主机名与您的新域名不同或不以 www 开头时才更改主机名。
如果您需要更多详细信息或执行此操作的代码,请告诉我。