Chinaunix首页 | 论坛 | 博客
  • 博客访问: 198862
  • 博文数量: 104
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 1275
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-17 20:51
文章分类
文章存档

2010年(11)

2009年(43)

2008年(50)

我的朋友

分类: WINDOWS

2009-10-16 13:55:35

现在网站使用的是专享主机,是虚拟私有主机(VPS),很多事情要自己动手做。
SupeSite/X-Space和Discuz!的伪HTML和Archiver存档都要使用到URL Rewrite,这是Windows的IIS中不具备的,在Apache服务器上才有的功能,原来在北京和美国的虚拟主机都应该是属于Apache服务,所以不需要过于关注,现在服务器是上海电信的Windows服务器,只能自己在IIS中添加ISAPI筛选器。
IIS中增加URL Rewrite功能,最多人选用的是名为“ISAPI Rewrite“的软件,网上下载的破解版,其实破解不完善,最终会不能用。
再次查找,找到了Ionic's Isapi Rewrite Filter,完全开源,完全免费,完全没有中文使用手册。
测试后,使用正常,用法分享一下:
首先到官方网站下载最新软件包,注意要下载的是IonicIsapiRewriter-1.2.14-bin.zip ,版本号可能会变化。
一、建立Rewrite目录
IIS上可以安装N个网站,每一个网站的Rewrite要求都不相同,可以在网站服务器C盘根目录建立一个Rewrite文件夹,下面各建立每一个网站的文件夹,分别为SupeSite、Discuz,还有其他网站的话则分别建立文件夹。
二、复制IIRF
复制软件包中的LIB下的IsapiRewrite4.dll文件到按上一条建立的文件夹中,一个文件夹要放一个。
三、建立空白规则文件
用记事本在每一个文件夹中建立IsapiRewrite4.ini文件,注意扩展名为ini。原版说明是说规则文件复制到对应文件夹,然后把文件名改为IsapiRewrite4.ini,我发现这样不好,应该打开ini文件,把规则复制到文件中,这样比较妥当。
四、规则文件格式基本照搬ISAPI Rewrite,要作修改
RewriteRule [源URL正则条件] [目的URL]
ISAPI Rewrite与IIRF的区别就在[目的URL],ISAPI Rewrite的要转义,而IIRF不用转义。
如果网上有现成的ISAPI Rewrite的规则可以直接复制过来,将[目的URL]中的反斜杠(\)一个个删除就可以用在IIRF中用了。
知道这个之后,你就可以随便在网上与人交流,按ISAPI Rewrite交流,最后把转义符(\)删掉就行了。
五、日志设置
在IIRF中日志值可以设置为0-5,在规则文件的开头部分有两行设置日志类型
RewriteLog   C:\Rewrite\supesite\iirfLog.out (注意要写清楚路径,各站点不同)
RewriteLogLevel 0   (0为不记类,3为一般测试,5为处理故障)
日志的代价高昂,同时不会自动删除文件,日志类型一定要设成0,除非用于检查才能修改为其他值,检查完后一定要改为0,否则日志文件把硬盘占满就麻烦了。
如果日志不为0,筛选器起用后,对应文件夹会产生类似以下的文件,是文本格式的,可以用记事本查看。
iirfLog.out.12345.log

六、IIS中的设置
1.添加Web服务扩展,每一个站点一条扩展,指向相应站点的IsapiRewrite4.dll
2.每个站点的属性中添加一条ISAPI筛选器,指向相应站点的IsapiRewrite4.dll
七、重启IIS服务
重启后就大功告成
八、规则文件可随时修改,随时生效!
有些设置方法可以参考ISAPI Wewrite
现在缠中说禅社区和论坛已经使用HTML格式的伪静态,全有赖于以上方法,特此记录下来分享。
# Discuz Rewrite规则
# 独立主机用户
# 修改自,原文为ISAPI_Rewrite专用
RewriteLog   C:\Server_Core\IIRF\discuz\iirfLog.out
RewriteLogLevel 0
RewriteRule ^(.*)/archiver/((fid|tid)-[\w\-]+)\.html\?*(.*)$ $1/archiver/index.php?$2&$4 [L]
RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html\?*(.*)$ $1/forumdisplay.php?fid=$2&page=$3&$4 [L]
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html\?*(.*)$ $1/viewthread.php?tid=$2&extra=page%3D$4&page=$3&$4 [L]
RewriteRule ^(.*)/space-(username|uid)-(.+)\.html\?*(.*)$ $1/space.php?$2=$3&$4 [L]
RewriteRule ^(.*)/tag-(.+)\.html\?*(.*)$ $1/tag.php?name=$2&$3 [L]
复制代码# SupeSite Rewrite规则
# 独立主机用户
# 修改以下语句中的 /supesite 修改为你的SupeSite目录地址,如果程序放在根目录中,请将 /supesite 修改为 /
# 修改自,原文为ISAPI_Rewrite专用
RewriteLog   C:\Server_Core\IIRF\supesite\iirfLog.out
RewriteLogLevel 0
RewriteRule ^/([0-9]+)$ /index.php?uid/$1 [L]
RewriteRule ^/([0-9]+)/spacelist(.+)$ /index.php?uid/$1/action/spacelist/type$2 [L]
RewriteRule ^/([0-9]+)/viewspace(.+)$ /index.php?uid/$1/action/viewspace/itemid$2 [L]
RewriteRule ^/([0-9]+)/viewbbs(.+)$ /index.php?uid/$1/action/viewbbs/tid$2 [L]
RewriteRule ^/([0-9]+)/(.*)$ /index.php?uid/$1/$2 [L]
RewriteRule ^/action(.+)$ /index.php?action$1 [L]
RewriteRule ^/category(.+)$ /index.php?action/category/catid$1 [L]
RewriteRule ^/viewnews(.+)$ /index.php?action/viewnews/itemid$1 [L]
RewriteRule ^/viewthread-(.+)$ /index.php?action/viewthread/tid-$1 [L]
RewriteRule ^/mygroup(.+)$ /index.php?action/mygroup/gid$1 [L]
复制代码
 
IIS的ISAPI服务器扩展URL REWRITE(URL重写)简介
 
ISAPI Rewrite实现IIS图片防盗链(更新)
 
 
阅读(1072) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~