众所周知,IIS是不支mod_rewrite的,但是可以通过第三方程序来实现,比如ISAPI_REWRITE和IIRF REWRITE等组件。IIS7 支持REWRITE,感觉也很方便,很傻瓜,但是WINDOWS 2003跑的是IIS6,所以没辙,只有从第三方扩展入手。
被这个东西纠缠一两天了,今天总算是完美搞定。
其实遇到的一些问题也不是很复杂,只是很纠结。
最大的问题还是在权限设置上面,前两天把服务器安全设置搞的太变态了,把WEBSHELL常用的WSCRIPT.SHELL和APPLICATION.SHELL等东西都禁用了。目录权限也改了很多。期间还遇到一个问题,比较纳闷,就是已经停用了LANMANSERVER,但是WEBSHELL还是可以查看到进程,纠结了。明天再研究研究。。
今天经历了ISAPI—IIRF—ISAPI的过程,下午用ISAPI实现了全局伪静态,但是死活搞不了分站伪静态,后来弄到一个注册码,成为FULL版,仍然不行,郁闷了!
然后到了晚上我就换了IIRF,结果更加郁闷,看了十几页的英文说明书,我也确定每一步都是按照INSTRUCTION来的,可就是不成功,连全局的IirfGloble.ini都没法载入。
后来被折磨的没办法了,凌晨换回ISAPI,这次总算是搞定了。全局没问题,分站也搞定了,其实核心在于权限,我把ROOT目录添加USER组的读权限就可以了!不用加列目录和写权限,安全第一!就这么个小问题,纠缠了我一天!哎。是我人品太差,还是我人太笨?
罢了罢了。我想我这应该还不算什么吧,人家开发者可能累的是死去活来呢!
另外做个好事,把ISAPI_REWRITE可以正常使用的DISCUZ和SUPESITE伪静态规则贴出来(找了很久的啊!)。
#DISCUZ REWRITE RULES
[ISAPI_Rewrite]
RewriteRule ^(.*)/archiver/((fid|tid)-[\w\-]+\.html)\?*(.*)$ $1/archiver/index\.php\?$2&$4
RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html\?*(.*)$ $1/forumdisplay\.php\?fid=$2&page=$3&$4
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html\?*(.*)$ $1/viewthread\.php\?tid=$2&extra=page\%3D$4&page=$3&$4
RewriteRule ^(.*)/space-(username|uid)-(.+)\.html\?*(.*)$ $1/space\.php\?$2=$3&$4
RewriteRule ^(.*)/tag-(.+)\.html\?*(.*)$ $1/tag\.php\?name=$2&$3
#SUPESITE REWRITE RULES
[ISAPI_Rewrite]
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不下于30回了,期间可能造成坛子访问不正常,再次向大家道歉!
真的累了,各位,晚安!
IIS7是默认就支持rewrite么?
不是的,要通过插件实现。