IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    如何配置IIS将旧域名的URL转向新域名

    汪宇杰发表于 2015-10-09 08:36:02
    love 0

    如果你网站要更换新域名,必定会碰到迁移的问题。你不可以直接停止老域名的解析,因为这样做会让搜索引擎失去老的索引,然后降低你网站的排名,正确的方法是告诉搜索引擎,你已经改域名了。也就是当用户或搜索引擎访问你的旧URL时,将URL转向到新域名的对应位置。

    比如我的博客,旧域名是diaosbook.com,新域名是edi.wang。那么对于之前对diaosbook.com的访问,如:

    http://diaosbook.com/post/2015/4/22/how-to-read-webconfig-appsettings-with-bigiblity

    需要转向到新域名:

    http://edi.wang/post/2015/4/22/how-to-read-webconfig-appsettings-with-bigiblity

    其实也就是替换域名部分,URL后面的所有内容都保持不变。

    要实现这个跳转,就得在IIS上安装一个URL Rewrite模块,可以在这里 http://www.iis.net/downloads/microsoft/url-rewrite 下载安装。

    装完以后,对于每一个网站,IIS的管理器里都可以指定单独的URL重写规则,既可以通过图形化界面配置,也能用web.config文件配置。

    刚才重写我博客域名的config如下:

    <system.webServer>
        ...
        <rewrite>
          <rules>
    	...
            <rule name="CanonicalHostNameRule">
              <match url="(.*)" />
              <conditions>
                <add input="{HTTP_HOST}" pattern="^diaosbook.com$" />
              </conditions>
              <action type="Redirect" url="http://edi.wang/{R:1}" />
            </rule>
          </rules>
        </rewrite>
    </system.webServer>

    pattern有好几种匹配方式,我这里是用正则的。匹配{HTTP_HOST}也就是域名是否和字符串“diaosbook.com”一致。一致的话就用action中的配置,重定向到新域名。

    action里Url后面的{R:1},代表URL域名之后的所有内容。

    type有两种,Redirect和Rewrite,是不一样的。Redirect是重定向,会产生一个HTTP 301,也就会通知搜索引擎老URL已经无效了以及新URL的位置。而Rewrite只是重写,HTTP状态码还和之前的一致,比如你有一个/a/b/c.html,要重写为/d.html,那么Rewrite只会把c.html的内容给塞到/d.html里去,看起来就好像/d.html存在一样。

    如果你有其他rule,得注意顺序,是从上至下匹配的。

    其他配置可参考微软的官方文档:http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference

    现在就可以得到一个301重定向了,搜索引擎也会及时的更新它的索引,把你的网站指向新域名。一段时间以后,你就可以放心停用老域名了。

     



沪ICP备19023445号-2号
友情链接