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

26

我有多个域名指向同一个主机位置。我希望将其中一个域名设为我的主要域名,并且每当用户从次要域名访问我的站点时,我希望执行301重定向到此主要域名。

例如:

www.example.com

这是我的主要域名。我希望所有与我的站点相关的其他域名都重定向到此处。

如果用户使用以下方式之一进入:

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

那么我想要用户被重定向到该页面的示例版本。

如何使用我的应用程序的web.Config文件进行此操作?我之所以问这个问题,是因为通常我的Web托管提供商后台有一个工具,可以让我设置此重定向,但我们的客户选择了不提供此类工具的不同托管提供商。

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

<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个回答

43

这与 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>

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接