是否可以执行 301 重定向并重定向到请求的资源?

是否可以执行 301 重定向并重定向到请求的资源?

对于我们的一个项目,我们正在对网站名称、徽标等进行重新品牌化......

因此,我们需要将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 开头时才更改主机名。

如果您需要更多详细信息或执行此操作的代码,请告诉我。

相关内容