web developer tips (25):在iis7下规范URLs和重定向
原文地址:You can have canonical URLs and Redirects with IIS 7.0
规范的URLs 有利于搜索引擎优化(Search Engine Optimized,SEO),人可以很容易理解 http://www.contoso.com 和http://contoso.com 是一样的。但是,许多的搜索引擎不会做这样的假设,会把它们作为两个分开的条目来对待。这样讲对它们进行等级区分,同时降低网站的整体相关性。
在iis7里面,你可以通过地址重写(URL Rewrite )来解决这个问题。在web.config里加入如下规则,所有用户访问http://contoso.com将会自动跳转到http://www.contoso.com
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="WWW Redirect" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^contoso.com$" />
</conditions>
<action type="Redirect" url="http://www.contoso.com/{R:0}"
redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
一个很重要事就是要使用“Permanent”(永久)定向。这样做很有帮助的是,任何人链接你的网站是使用的非www地址时,直接使搜索引擎的机器人在抓取作为永久移动的链接。新的url将会被定义为正确的地址,因此旧的非www地址将不会被索引。
在iis 7.0 的管理器界面生成刚才我粘贴的xml代码,也可以实现地址重写 (URL Rewrite)。
http://www.watch-life.net/visual-studio/you-can-have-canonical-urls-and-redirects-with-iis-7-0.html
打开iis管理器
单击URL Rewrite
单击“Add Rules”,在“add Rules”对话框里选择“Blank rule”。
选择一个你喜欢的模式,选中“Action type”下拉框中的“Redirect”项,然后输入重定向的url。这样做将增加如上文所述(xml 配置代码)相同的内容。
一个很重要的就是URL Rewrite模块是需要被安装才可以工作,你可以如下两个版本:
x86版本:http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1691
x64版本:http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1692
该模块(目前)只支持IIS7.0,你应该运行IIS7.0有利于使用它。如果你的项目是使用Visual Studio for Web Developers开发,那么项目应该配置成在iis7.0下运行,而不是其他的web服务器。
有关URL Rewrite模块的详细内容见:http://learn.iis.net/page.aspx/460/using-url-rewrite-module/
IIS在7.0以前的版本中,对于URL Rewrite的支持非常不好。
IIS 7.0 的URL Rewrite模块显然是向Apache学习来的,甚至可以把Apache 下的. htaccess 文件中有关URL Rewrite规则导入到IIS 7.0 的URL Rewrite模块。有关这方面的内容参见:
IIS7-URL重写(URL Rewrite Module)
更多文章见:守望轩[http://www.watch-life.net/]