配置 IIS Rewrite 模块 并修改 httpd.ini文件
下载IIS Rewrite模块:http://download.discuz.net/4.1.0/discuz_iis_rewrite.zip ;
2、 将压缩包解压到任意目录,(如:C:\Rewrite)。然后打开“控制面板”-“管理工具”-“IIS信息服务管理器”-“网站”-“您的站点”-“属 性”。在“ISAPI筛选器”项点击 “添加”,筛选器名称填入Rewrite,可执行文件为C:\Rewrite\Rewrite.dll ;
3、然后修改httpd.ini 文件,添加相应的过滤规则,例如:
RewriteRule ^(.*)/([a-z0-9\-\_]+)$ $1/Default\.aspx\?id=$2 [I,O]
http://localhost/Text 就会等同于 http://localhost/Default.aspx?id=Text
RewriteRule ^(.*)/id_([a-z0-9\-]+)\.html$ $1/Default\.aspx\?id=$2 [I,O]
http://localhost/id_Text.html 就会等同于 http://localhost/Default.aspx?id=Text
^(.*)/html/([0-9]+)/([0-9]+)\.html$ $1/Default\.aspx\?id=$2&name=$3
http://localhost/html/001/007.html 就等同于 http://localhost/Default.aspx?id=001&name=007
RewriteRule 语句我的理解:http://hi.baidu.com/liyuehui1987/blog/item/612fb044d1dbad83b3b7dc80.html
4、重新启动IIS就可以生效了(这一步很重要,每次修改httpd.ini后都要重启 IIS 以加载配置。)。
实际作中发现应该为:
RewriteRule ^(.*)-htm-(.*)$ $1.php\?$2
^(.*)/([a-z0-9\-\_]+)$ $1/Default\.aspx\?id=$2 [I,O]
^(.*) 这个是必须的
/ 这个应该是目录的开始
([a-z0-9\-\_]+) 这个是正则表达式,是用来匹配参数的
$ 这个是必须的就像最前面的 ^(.*)
$1 好像也是必须的
/ 也是一个目录的开始
Default 文件的真实名称(不包括扩展名)
\. 这是个转意字符 转意后面的点
Aspx 文件的扩展名
\? 又是一个转意字符 转意后面的问号
id= 参数的名称
$2 好像代表了参数的值(第一个参数的值)
[I,O] 好像是必须的
http://localhost/Text 就会等同于 http://localhost/Default.aspx?id=Text 这就成了目录式了
^(.*)/id_([a-z0-9\-]+)\.html$ $1/Default\.aspx\?id=$2 [I,O]
^(.*)这个是必须的
/ 这个应该是目录的开始
id_ 这是最终生成的文件名的一部分(最终文件名:id_ 加 参数值)
([a-z0-9\-\_]+) 这个是正则表达式,是用来匹配参数的
\. 这个是最终文件的名称和后缀名之间的点,\ 为转意字符
Html 为最终文件名的后缀名
$ 这个是必须的就像最前面的 ^(.*)
$1好像也是必须的
/ 也是一个目录的开始
Default文件的真实名称(不包括扩展名)
\. 这是个转意字符 转意后面的点
Aspx 文件扩展名
\? 又是一个转意字符 转意后面的问号
id= 参数的名称
$2好像代表了参数的值(第一个参数的值)
[I,O] 也是必须的
localhost/id_Text.html 就会等同于 localhost/Default.aspx?id=Text 成静态得了