IIS_rewrite伪静态设置方法
一、为什么要设置伪静态页面
伪静态页面是相对静态页面而言,是一个伪装成静态页面的动态页面,例如将http://youname.com/index.php?a=1&b=2的页面用http://yourname/index-htm-1-2.htm来表示。伪静态页面有两个好处,首先是对搜索引擎友好,google的站长指南中有说,每个页面至少要有一个静态地址可以访问,伪静态URL可以当作URL来使,同样内容的页面,在搜索引擎来看,静态地址要比动态地址权重高,因为搜索引擎认为动态地址不稳定,而且容易陷入链接的死循环,动态页面是搜索引擎优化的大忌。其次,伪静态页面可以将页面地址伪装成很短的地址,如上面的地址,可以设置成伪静态地址http://yourname/1/2,便于访问者识别,对访问者友好,从心理学角度,用户更喜欢访问http://yourname/1/2的网址,而不喜欢访问http://youname.com/index.php?a=1&b=2的网址。
二、在IIS里如何设置伪静态
在apache中可以比较方便地设置伪静态,在IIS中也可以设置伪静态。
在IIS中设置伪静态,首先需要下载一个ISAPI_rewrite软件,ISAPI_rewrite分为收费版和免费版两个版本,免费版就是ISAPI_rewrite lite,ISAPI_rewrite lite不能对站点进行独立的伪静态设置。但如果站点不多的话,可以通过配置不同的ISAPI_rewrite规则,实现多个站点的伪静态设置。
ISAPI_rewrite lite的官方下载地址为:http://www.helicontech.com/, 什么?不懂英文?那就在baidu或google中搜一下“ISAPI_rewrite 下载”,找一个中文网站下载。
下载后,上传到服务器,安装完成需要在站点的IIS的ISAPI设置中加入ISAPI_rewrite lite安装目录的ISAPI_Rewrite.dll,看到一个绿色向上箭头出现的时候,那么恭喜你,ISAPI_rewrite lite已经启动。
ISAPI_rewrite lite启动后,再到ISAPI_rewrite lite的安装目录,打开httpd.ini文件,里面就是进行IIS rewrite规则的设置了。IIS rewrite设置使用正则表达式,不懂正则表达式,不要紧,参考一下下面的案例就会了。
三、举例说明配置IIS Rewrite规则
泥人就拿泥胚网来举例吧。
泥胚网(www.nipei.com)采用的是ArticleMS的核心代码,泥人在此基础上经过了大量的汉化和修改工作。本系统,原先有伪静态功能,然而在IIS中使用不起来,无奈之下,泥人只好自己想办法,经过努力,终于实现了伪静态功能。
以本文为例,泥胚网的动态域名形式为www.nipei.com/index.php?a=articles&p=84,你现在看到的URL地址是www.nipei.com/article/84 。
设置方法是打开httpd.ini文件,加入一行下面规则,就可以了
RewriteRule ^(.*)/article/([0-9]+)$ textarea/index\.php\?a=articles&p=
其中表示 /article之前的所有内容(.*)保持不变,/article/用/index\.php\?a=articles&p=代替,其中\是转义符。([0-9]+)表示数字字符,保持不变。于是就实现了将www.nipei.com/index.php?a=articles&p=84伪静态为www.nipei.com/article/11 的url了。
有些时候有多个参数,也一样的,用,可以一直表示上去。
例如要将http://www.abc.com/index.php?a=a1&b=b1&c=c1(其中a1、b1、c1为可变的参数)伪静态为http://www.abc.com/index-htm-a-a1-b-b1-c-c1.html的静态地址,这个比较具有典型意思,包含了大都数的类型,lxblog就是属于这种类型的。
我们可以这样写IIS Rewrite规则:
RewriteRule ^(.*)-htm-a-([a-z0-9\_]+)-b-([a-z0-9\_]+)-c-([a-z0-9\_]+\.html)$ textarea\.php\?a=&b=&c=
不会正则表达式的照猫画葫芦就可以了。
当然,在IIS Rewrite 设置完成,测试通过后,需要将你网站中,原先的动态链接改为静态链接,以便搜索引擎收录排名。