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管理器

IIS_Manager

单击URL Rewrite
Url_Rewrite

单击“Add Rules”,在“add Rules”对话框里选择“Blank rule”。
image

选择一个你喜欢的模式,选中“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)



微信扫描下方的二维码阅读本文

那年今日

2023-07-19 学习是最可能的人生捷径 (4 个评论)

2010-07-19 寻根之旅 (31 个评论)

2008-07-19 使用Google Gears 心得 (8 个评论)

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注