网站的域名如果进行更改,一般要对原有的域名进行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="https://shiyousan.com/{R:0}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
上面的代码中 <add input="{HTTP_HOST}" pattern="^ywftest.com$" /> 这段代码,其中ywftest.com是原来的网站域名。而<action type="Redirect" url="https://shiyousan.com/{R:0}" redirectType="Permanent" />这段代码中,https://shiyousan.com是网站的新域名,也是旧域名要301跳转到的目标域名。将这段配置文件设置添加到程序的Web.config中,在搜索引擎打开的原域名地址都会自动调整到新域名的地址了。
需要注意的是,配置文件中的格式一定要和上面代码的一样,比如 pattern="^ywftest.com$",其中^$都是必须的,这是正则表达式匹配域名路径,而url=https://shiyousan.com/{R:0}中的{R:0}则是URL匹配规则的反向引用,具体可以看这两篇文章:
- IIS8如何安装和使用URL重写工具-URL Rewrite
- 详解IIS中的重写工具下关于操作重定向URL中的{R:N}与{C:N}
还有一点也要注意,如果出现元素 “system.webServer” 的子元素 “rewrite” 无效 的这个警告信息,这是由于以前的Visual Studio智能提示模式是不支持URL Rewrite 功能的,VS2013倒是正常。而且这个rewrite也只有在IIS7中才可以使用(其他版本的IIS可能要安装URL Rewrite模块功能)。
必须注意事项!!!
网站如果发布到IIS上,一定要检查IIS是否有安装URL Rewrite重定向模块,如果没有的话还需要在服务器的IIS上安装,否则网站将无法打开,这里点击进入官方的下载地址。
如果网站程序是在VS2013中调试的话,上面的配置可以看到是起作用的(使用的是IIS Express)并且不会报错,但是如果使用VS2010或者更低的版本,调试的时候上面的配置则无法起作用。
因为VS2010使用的是ASP.NET Development Server(ASP.NET 开发服务器),所以要么发布到IIS上测试,要么调试的时候不使用Visual Studio的开发服务器,而是用本地IIS服务器,前提是本地电脑上要安装IIS7,修改调试选项的地方在VS中项目下的Properties项目属性设置里,点击Web,下面就有选项了。这个错误可以看这篇文章:Visual Studio IntelliSense for URL Rewrite,还有的问答:The element > system.webServer' has invalid child > element 'rewrite'。
相关文章:
- Windows虚拟主机与VPS如何实现301重定向(asp.net)
- IIS7 下 的URL REWRITE规则
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/98316.html