分享

ASP.NET 301跳转或者进行301重定向/转向的方法

 寒木萧条 2014-12-19

网站的域名如果进行更改,一般要对原有的域名进行301跳转操作,也叫做301重定向和301转向,这样对于SEO优化是十分有利的,还可以保证更换后的新域名能被各个搜索引擎收录进去。本文介绍了如何在ASP.NET 网站或者ASP.NET MVC网站中利用配置文件设置对全站URL进行301跳转,该跳转是所有的URL:包含静态页面,纯HTML文件,各种一般处理程序,所有的图片链接。

具体代码如下(在ASP.NET程序的Web.config中的system.webServer节点设置和添加<rewrite>节点):

  <system.webServer> 
    <rewrite> 
      <rules> 
        <rule name="WWW Redirect" stopProcessing="true"> 
          <match url=".*" /> 
          <conditions> 
            <add input="{HTTP_HOST}" pattern="^ywftest.com$" /> 
          </conditions> 
          <action type="Redirect" url="http://www./{R:0}" redirectType="Permanent" /> 
        </rule> 
      </rules> 
    </rewrite> 
  </system.webServer>

上面的代码中 <add input="{HTTP_HOST}" pattern="^ywftest.com$" />   这段代码,其中ywftest.com是原来的网站域名。而<action type="Redirect" url="http:///{R:0}" redirectType="Permanent" />这段代码中,http://是网站的新域名,也是旧域名要301跳转到的目标域名。将这段配置文件设置添加到程序的Web.config中,在搜索引擎打开的原域名地址都会自动调整到新域名的地址了。

需要注意的是,配置文件中的格式一定要和上面代码的一样,比如 pattern="^ywftest.com$",其中^$都是必须的,这是正则表达式匹配域名路径,而url=http:///{R:0}中的{R:0}则表示该域名下第一个301跳转规则(R:0表示索引0)。

如果旧域名有多个或者要设置多个子域名进行301跳转,根据{R:X}这里的索引编号进行对应(比如R:0,R:1,R:2),也就是说可以做多个域名301跳转,具体可以看下国外的这篇文章:Fix Common SEO Problems Using the URL Rewrite Extension

还有一点也要注意,如果出现元素 “system.webServer” 的子元素 “rewrite” 无效 的这个警告信息,这是由于以前的Visual Studio智能提示模式是不支持URL Rewrite 功能的,VS2013倒是正常。而且这个rewrite也只有在IIS7中才可以使用(其他版本的IIS可能要安装URL Rewrite模块功能)。

如果网站程序是在VS2013中调试的话,上面的配置可以看到是起作用的(使用的是IIS Express)并且不会报错,但是如果使用VS2010或者更低的版本,调试的时候上面的配置则无法起作用,因为VS2010使用的是ASP.NET Development Server(ASP.NET 开发服务器),所以要么发布到IIS7上测试,要么调试的时候不使用Visual Studio的开发服务器,而是用本地IIS服务器(本地电脑要安装IIS7,修改的地方在VS中项目下的Properties项目属性设置里,点击Web,下面就有选项了)。这个错误可以看这篇文章:Visual Studio IntelliSense for URL Rewrite,还有的问答:The element > system.webServer' has invalid child > element 'rewrite'

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多