秋刀鱼设计

团队专业网站建设、品牌产品推广服务

@helosh16年前

2009/05/30
23:23 星期六
代码猿

windows 2003/vps上安装ISAPI Rewrite

这几天在忙着如何URL静态化,现在终于解决。具体呢,看下面咯。收集整理。

我们知道在Apache中有mod_rewrite来实现URL的重写功能(URLRewrite),然而IIS并没有自带这个功能,因此我们就需要使用第三方组件来实现。其实目前有好几种IIS下的Rewirte组件,都是通过ISAPI筛选器来加载然后实现URL重写的。
用得比较广泛的一个是ISAPI Rewrite,基本上国内支持Rewirte功能的Windows 虚拟主机都 采用了该组件。ISAPIRewrite组件有免费版以及商业版,免费版只支持全局httpd.ini配置(不能对每个站点进行单独设置,除非通过加载不同的dll来实现,比较麻烦。)而商业版支持用户自定义httpd.ini文件,只要放在站点根目录下就能生效。这个大大方便了用户自己修改URL重写规则。
ISAPI Rewrite是一个基于正则表达式的强大的URL处理引擎,他使用起来基本上就像Apache的mod_rewrite,但是他是专门为微软的Internet Information Server (IIS)设计的。
ISAPI Rewrite是一个使用纯C/C++编写的ISAPI筛选器,所以速度是相当快的!ISAPI Rewrite使你可以自由的规划网站的URL。
ISAPI全称为Internet Server Application Program Interface。
我安装的是官方的ISAPI_Rewrite3_0058_Lite.msi 免费版。下载安装。

安装运行后,打开管理工具中Internet信息管理(IIS管理),在网站单击右键选属性,就可以看到ISAPI_Rewrite已经被加入到了ISAPI筛选器中。

按照默认安装的位置,可以在 C:Program FilesHeliconISAPI_Rewrite 找到 httpd.conf 在此文件中输入Rewrite的规则即可。

正常情况下,修改rewrite规则不需要重起IIS。

这里要注意的是:必须给予ISAPI Rewrite所在目录IIS_WGP组的读写权限,否则你的网站就会直接Service Unavailable,应用程序池遇到错误而停止。在事件查看器中可以找到相应的错误。当然,网上有很多别人写好的Rewrite Rules(重写规则),我们可以方便的使用,因为大部分程序所使用的URL重写规则是一样的,比如Discuz!, WordPress等。日后我们会整理一些常用的URL Rewrite 规则提供给大家使用,当然如果你的网站没有现成的规则,也可以通过这些规则进行简单的修改后直接使用。当我们已经写好了httpd.ini以后,将httpd.conf放在相应的位置后就能使用了(免费版放在ISAPI Rewrite安装目录中,商业版只需要放在需要重写的站点根目录下就可以了)。

参考资料:

http://www.menhutong.com.cn/bbs/thread-37700-1-1.html

http://chenfangyi.com/isapirewrite-regular-expression.html

http://chenfangyi.com/isapirewrite-iisrewrite.html

windows 2003/vps上安装ISAPI Rewrite

@helosh16年前

2009/04/25
21:30 星期六
代码猿

windows2003下apache 服务器支持rewrite 及.htaccess文件解析

 

先说下配置过程共两步:

一、打开 httpd.conf 文件找到这一行

#LoadModule rewrite_module modules/mod_rewrite.so

去掉前面的#号,如果没有就在后面添加一行,此操作即可开通支持rewrite功能。

二、找到代码:

<Directory />
Options FollowSymLinks
AllowOverride NONE
</Directory>

将其中的红色 NONE 改为 ALL

此操作即可开始支持解释 .htaccess文件。

我的机器就是这样配置的,安装DZ后,我把DZ的重写规责写到了 httpd.conf文件的后面,代码如下:

(DISCUZ的重写规责):

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteRule ^(.*)/archiver/((fid|tid)-[w-]+.html)$ $1/archiver/index.php?$2
   RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+).html$ $1/forumdisplay.php?fid=$2&page=$3
   RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ $1/viewthread.php?tid=$2&extra=page%3D$4&page=$3
   RewriteRule ^(.*)/space-(username|uid)-(.+).html$ $1/space.php?$2=$3
   RewriteRule ^(.*)/tag-(.+).html$ $1/tag.php?name=$2
</IfModule>

至此,重新启动APACHE服务器后打开本机安装的DZ,开启静态化,好用。

然后把规责写进 .htaccess 文件,就是不好用。我快被这问题搞疯了。

 

链接地址:http://www.discuz.net/usersguide/advanced_urlrewrite.htm#title

windows2003下apache 服务器支持rewrite 及.htaccess文件解析

@helosh16年前

2009/04/25
21:28 星期六
代码猿

Discuz! URL 静态化的使用

IIS Web Server(独立主机用户)

    discuz论坛url静态化对搜索引擎是非常好的,可以说url静态化对论坛SEO来说是非常重要的。当然,前提是你的虚拟主机或者服务器支持rewrite。首先在 IIS 的 Isapi 上添加这个筛选器,筛选器名称为 Rewrite ,可执行文件选择 Rewrite.dll ,重新启动 IIS。附件中 httpd.ini 已经设置好,IIS下的rewrite规则如下:

    	[ISAPI_Rewrite]
    
    	# 3600 = 1 hour
    	CacheClockRate 3600
    
    	RepeatLimit 32
    
    	# Protect httpd.ini and httpd.parse.errors files
    	# from accessing through HTTP
    	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
    
    

    然后进入论坛系统设置的搜索引擎优化,根据需要开启 URL 静态化功能。

    附件下载地址:http://www.discuz.net/attachment.php?aid=124274

参考:http://www.discuz.net/usersguide/advanced_urlrewrite.htm#title

Discuz! URL 静态化的使用