用ISAPI_Rewrite实现asp的静态化

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用ISAPI_Rewrite实现asp的静态化

ASP网站程序在国内运用很广,但是类似于class.asp?id=1这样的URL有点不利于搜索引擎的收录,也就是说不符合友好URL(URLs-Friendly)的标准,那么我们用ISAPI_Rewrite打造一个Clean URL。

1.下载ISAPI_Rewrite.ISAPI_Rewrite分精简(Lite)和完全(Full)版.精简版不支持对每个虚

拟主机站点进行重写,只能进行全局处理.不过对于有服务器的朋友,精简版也就够啦.精简版下

载地

2.安装.msi的文件,和装一般程序一样装就可以了,俺就装在D:\ISAPI_Rewrite.

3.接下来一步比较重要哦,看仔细喽.打开Internet 信息服务,右键,web站点属性,电ISAPI筛选器选项卡.添加筛选器,名称自己填,路径自己指定

ISAPI_Rewrite.dll,然后确定.

4.来测试一下.新建一个1ting.asp,里面写上

<%=request.querystring(”inso”)%>

效果就是执行的时候1ting.asp?inso=*浏览器显示*.

5.这一步很重要哦,开始添加rewrite规则.正则,好头痛,幸亏这个例子比较简单.

找到ISAPI_Rewrite目录,把httpd.ini的只读属性去掉,打开编辑.我们要把1ting.asp?inso=im286映射成为1ting-im286.html这样的类型,需要在httpd.ini里加上这么一行:

RewriteRule /1ting-([0-9,a-z]*).html /1ting.asp\?inso=$1,保存.

6.来来来,到浏览器里查看一下效果吧.输入http://12

7.0.0.1/1ting.asp?inso=im286和http://127.0.0.1/1ting-im286.html,显示的内容是不是都是im286?这就证明成功啦!

嘿嘿,1ting-im286.html这样的页面要比1ting.asp?inso=im286容易收入,所以现在还在用动态方式的朋友可以尝试一下这样的静态映射效果. IIS Rewrite也可以实现这样的功能。

下面是一个范例:

#规则以下======================================================

[ISAPI_Rewrite]

# 3600 = 1 hour

CacheClockRate 3600

RepeatLimit 32

#栏目导航

RewriteRule ^/Article-Class([0-9]+)$ /Article/ShowClass\.asp\?ID=$1 [L]

RewriteRule ^/Photo-Class([0-9]+)$ /Photo/ShowClass\.asp\?ID=$1 [L]

RewriteRule ^/DownLoad-Class([0-9]+)$ /Photo/ShowClass\.asp\?ID=$1 [L]

#内容连接

RewriteRule ^/Article([0-9]+)$ /Article/ShowInfo\.asp\?ID=$1 [L]

RewriteRule ^/Photo([0-9]+)$ /Photo/ShowInfo\.asp\?ID=$1 [L]

RewriteRule ^/DownLoad([0-9]+)$ /DownLoad/ShowInfo\.asp\?ID=$1 [L]

#栏目分页

RewriteRule ^/Article-Class([0-9]+)_([0-9]+)$ /Article/ShowClass\.asp\?ID=$1&page=$2 [L]

#结束

ASP之URL重写下载ISAPI_Rewrite解压到任意文件夹安装,给IIS用户读取权限,在IIS右键点击一个站点,属性,ISAPI筛选器,添加,筛选器名称一定得叫 re,可执行文件就点浏览找到你解压的目录Rewrite.dll加上即可。重启IIS后应该就能支持URL重写规则了。需要修改解压目录中的httpd.ini这个文件

RewriteRule /info_(\d+)\.htm /info\.asp\?id=$1 [N,I] (#要重写的路径 (\d+) 就是任意整型 $1 就是要代替的第一个参数)

这句话就可以把提交的地址/info_122.htm映射到真正的地址

/info.asp?id=122

如果你在处理数据翻页,那么写法是:

More_<%=Page%>_<%=type%>.html (注:page是翻页页数,type是数据类型)表现形式:More_1_95.html

如果翻下一页,则为:More_2_95.html,继续下一页的循环,则是:

More_3_95.html,以此类推。

不过你需要在httpd.ini文件中增加以下代码:

RewriteRule /More_(\d+)_(\d+)\.html /jsp/more\.jsp\?page=$1&type=$2 [N,I]

如果你的动态程序有多个参数需要传递,那么就增加多个(\d+)即可,如下:

RewriteRule /More_(\d+)_(\d+)_(\d+)\.html /jsp/more\.jsp\?page=$1&type=$2&type2=$3 [N,I]

翻页处理表现形式是:More_1_95.html

如果想把/info.asp?id=50#abc 转换成静态的网页

因为#abc是程序处理了ID=50这个变量生成静态页面之后按锚点又做了一次页内链接,所以应该这么做映射

/info.asp?id=50#abc转换成

/info_50.htm#abc,重写规则如下:

RewriteRule /info_(\d+)\.htm#(\d+) /info\.asp\?id=$1#$2 [N,I]

注意:以前在Window 2000 IIS5.0一直使用ISAPI_Rewrite进行动态链接重写HTML静态网址,

最近升级到 Widnows 2003 IIS6.0 后,发现ISAPI_Rewrite根本运行不起来,在IIS 6.0里面一直提示“未加载”,后来查了又查,原来是文件的权限问题。

IIS 6.0 ISAPI_Rewrite 是在Service帐号下运行的,将数据文件的读写权限给予Service 帐号后,ISAPI_Rewrite 终于可以正常运行了。

相关文档
最新文档