参数目录化,就是将 类似 http://www.abc.com/store/store.aspx?id=1024 这样的网址,对外改为 http://www.abc.com/1024。
要实现这种功能,可以用以下三种方式(应该不仅限这三种吧!)
1、用微软的 Microsoft URL 重写模块 2.0,但只能给IIS7使用,IIS6不行。
64位:
http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=1b8c7bd8-8824-4408-b8fc-49dc7f951a00
32位:
http://www.microsoft.com/zh-cn/download/details.aspx?id=5747
2、isapi_rewrite
http://www.helicontech.com/download-isapi_rewrite3.htm
但完全版有日期限制,如果不想掏钱,有大牛破解了,可以用下面这个:
http://download.csdn.net/detail/keke0307/3867086
3、urlrewriter.net
这个有源代码,可以自己编译。
机缘巧合之下,我用了方法一 和 二。因为开发机器是WIN7,装了IIS7,所以用微软的重写模块;而服务器是WIN2003,就用了isapi_rewrite。
下面就这两种方法分别做一点心得介绍。
事实上,这两种方法大同小异,IIS基本上不用怎么配置,没有网上说的那么玄妙,又是勾选,又是映射,又是权限之类,关键在于要写对正则表达式。
1、微软的 Microsoft URL 重写模块 2.0
安装好之后,就可以改写网站下的web.config了。
<configuration> <system.web> <compilation debug="true" targetFramework="4.0"/> <httpRuntime/> </system.web> <system.webServer> <rewrite> <rules> <!-- 实现http://localhost/1024 ==> http://localhost/store/store.aspx?id=1024 --> <rule name="storecode"> <match url="^([1-9][0-9]*)/?$" ignoreCase="true"/> <action type="Rewrite" url="/store/store.aspx?id={R:1}"/> </rule> <!-- 实现http://localhost/1024/p=1&c=1 ==> http://localhost/store/store.aspx?id=1024&p=1&c=1 --> <rule name="storecode with param"<