301 使用 web.config 将一个域重定向到另一个域

Posted

技术标签:

【中文标题】301 使用 web.config 将一个域重定向到另一个域【英文标题】:301 Redirect one domain to another using web.config 【发布时间】:2015-12-15 09:24:58 【问题描述】:

我有多个域指向一个托管位置。 我希望建立一个域作为我的主域,因此我希望每当用户从辅助域访问我的站点时执行 301 重定向到这个主域。

例如:

www.example.com

这是我的主要域名。我希望与我的网站关联的所有其他域都重定向到这里。

如果有用户进来:

www.test.com 或 www.test.com/anypage 等等

然后我希望将用户重定向到该页面的示例版本。

如何使用我的应用程序的 web.Config 文件执行此操作?我问的原因是,通常我的网络托管服务提供商在他们的后台有一个工具,可以让我设置这个重定向,但是,我们的客户选择了一个不提供这种工具的不同的托管服务提供商。

我尝试使用以下代码进行此重定向,但它似乎不起作用:

<rule name="Canonical Host Name" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="HTTP_HOST" negate="true" pattern="^test\.com$" />
  </conditions>
  <action type="Redirect" url="http://www.example.com/R:1" redirectType="Permanent" />
</rule>

我的应用程序是一个由 Umbraco 提供支持的站点,因此在 web.config 文件中有几个 system.webServer 条目。可能只是我在错误的地方输入了这段代码,但如果我只习惯在 .htaccess 文件中进行 301 重定向,我将不胜感激这里的任何帮助。

【问题讨论】:

【参考方案1】:

这并不是真的与 umbraco 相关,但我认为你想要做的是:

<rewrite>
  <rules>
    <rule name="redirect" enabled="true">
      <match url="(.*)" />
        <conditions>
          <add input="HTTP_HOST" negate="true" pattern="^www\.example\.com$" />
        </conditions>
      <action type="Redirect" url="http://www.example.com/R:1" appendQueryString="true" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

匹配所有网址,除非主机名部分正好是 www.example.com - 并将这些网址重定向到 www.example.com/whatever。

【讨论】:

以上是关于301 使用 web.config 将一个域重定向到另一个域的主要内容,如果未能解决你的问题,请参考以下文章

301 使用 .htaccess 从旧域重定向到新域

IIS7 或 .Net 301 从一个域重定向到另一个域

Web.Config (IIS) 中的简单 301 重定向

如何在 web.config 中配置 301 永久重定向?

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

301 从 IIS 6 上的 web.config 重定向