将旧域重定向到新域保持URL

时间:2015-07-10 18:54:04

标签: redirect iis url-rewriting dns

我们正在发布我们的Web应用程序的新版本,并且正在使用新域名进行品牌变更。

我们的应用程序都托管在Azure中。 当前应用 - 云服务 新应用程序 - Azure网站

我想要实现的是将任何旧链接从旧域重定向到新域,同时保留网址部分。

实施例: 用户访问 https://my.currentdomain.com/any/link

将被引导至 https://my.newdomain.io/any/link

我是否从currentdomain到newdomain执行CNAME,然后在web.config中重写URL?

谢谢!

更新 - 我在本地进行了测试,它正在寻找我正在寻找的东西。我只是将旧域的cname指向新域,此重定向应该选择链接。

<rule name="Redirect to new domain" stopProcessing="true">
      <match url="^(.*)$" />
      <conditions>            
        <add input="{HTTP_HOST}" matchType="Pattern" pattern="^olddomain(:\d+)?$" />
      </conditions>
      <action type="Redirect" url="https://my.newdomain.io/{R:1}" redirectType="Permanent" />
    </rule>

2 个答案:

答案 0 :(得分:1)

您在Azure中托管应用程序的事实对您要找到的解决方案影响很小甚至没有影响。

当你做这些事情时,你通常也希望保留你在搜索引擎中的所有信用。如果您的https://my.current.domain.com/any/link HTTP 301 Redirect Permanent到新位置,您就可以实现这一目标。

根据项目的规模和复杂程度,这可能是一项微不足道的任务,也可能不那么容易。

一个选项,仅在您想重定向少量(如十几个)链接时才有效。您可以直接在Web.Config文件中执行此操作:

  <location path="any/link">
    <system.webServer>
      <httpRedirect enabled="true" destination="https://my.newdomain.io/any/link" httpResponseStatus="Permanent" />
    </system.webServer>
  </location>

当你拥有一堆链接,甚至是幕后的整个CMS时,这当然没有意义。如果是这种情况,我会选择写custom HTTP Module for IIS。该模块的唯一目的是检查传入的URI并进一步使用,或生成HTTP 301重定向。

如果您使用的是Microsoft的最新版和最佳版,则可以使用custom OWIN Middleware实现相同的(自定义HTTP模块)。

如果只是域名更改,则要保留所有路径和查询字符串,请查看this good article how can you do this with URL Rewrite under IIS

答案 1 :(得分:0)

将此代码添加到您的头文件中:

<script type="text/javascript">
    // Get Current URL
    var url = window.location.href;
    // Replace domain in URL
    var newurl = url.replace("olddomain.com", "newdomain.com");
    // Redirect to new URL
    document.location = newurl;
</script>