示例1:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="规则 1" stopProcessing="true"> <match url="^includes/(.*)" /> <action type="Rewrite" url="includes\/{R:1}" /> </rule> <rule name="规则 2" stopProcessing="true"> <match url="^(blog)/includes/(.*)" /> <action type="Rewrite" url="{R:1}/includes\/{R:2}" /> </rule> <rule name="规则 3" stopProcessing="true"> <match url="^(blog)/(.*).html(.*)" /> <action type="Rewrite" url="{R:1}/index.php\/{R:2}.html{R:3}" /> </rule> <rule name="规则 4" stopProcessing="true"> <match url="^(.*).html(.*)" /> <action type="Rewrite" url="index.php\/{R:1}.html{R:2}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
示例2:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Imported Rule 1"> <match url="list-([0-9]+)\.html" ignoreCase="false"/> <action type="Rewrite" url="plus/list.php?tid={R:1}" appendQueryString="false"/> </rule> <rule name="Imported Rule 2"> <match url="list-([0-9]+)-([0-9]+)-([0-9]+)\.html" ignoreCase="false"/> <action type="Rewrite" url="plus/list.php?tid={R:1}&TotalResult={R:2}&PageNo={R:3}" appendQueryString="false"/> </rule> <rule name="Imported Rule 3"> <match url="view-([0-9]+)-([0-9]+)\.html" ignoreCase="false"/> <action type="Rewrite" url="plus/view.php?arcID={R:1}&pageno={R:2}" appendQueryString="false"/> </rule> </rules> </rewrite> </system.webServer> </configuration>
示例3:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="portal_topic"> <match url="^(.*/)*topic-(.+).html\?*(.*)$"/> <action type="Rewrite" url="{R:1}/portal.php?mod=topic&topic={R:2}&{R:3}"/> </rule> <rule name="portal_article"> <match url="^(.*/)*article-([0-9]+)-([0-9]+).html\?*(.*)$"/> <action type="Rewrite" url="{R:1}/portal.php?mod=view&aid={R:2}&page={R:3}&{R:4}"/> </rule> <rule name="forum_forumdisplay"> <match url="^(.*/)*forum-(\w+)-([0-9]+).html\?*(.*)$"/> <action type="Rewrite" url="{R:1}/forum.php?mod=forumdisplay&fid={R:2}&page={R:3}&{R:4}"/> </rule> <rule name="forum_viewthread"> <match url="^(.*/)*thread-([0-9]+)-([0-9]+)-([0-9]+).html\?*(.*)$"/> <action type="Rewrite" url="{R:1}/forum.php?mod=viewthread&tid={R:2}&extra=page%3D{R:4}&page={R:3}&{R:5}"/> </rule> <rule name="group_group"> <match url="^(.*/)*group-([0-9]+)-([0-9]+).html\?*(.*)$"/> <action type="Rewrite" url="{R:1}/forum.php?mod=group&fid={R:2}&page={R:3}&{R:4}"/> </rule> <rule name="home_space"> <match url="^(.*/)*space-(username|uid)-(.+).html\?*(.*)$"/> <action type="Rewrite" url="{R:1}/home.php?mod=space&{R:2}={R:3}&{R:4}"/> </rule> <rule name="home_blog"> <match url="^(.*/)*blog-([0-9]+)-([0-9]+).html\?*(.*)$"/> <action type="Rewrite" url="{R:1}/home.php?mod=space&uid={R:2}&do=blog&id={R:3}&{R:4}"/> </rule> <rule name="forum_archiver"> <match url="^(.*/)*(fid|tid)-([0-9]+).html\?*(.*)$"/> <action type="Rewrite" url="{R:1}/index.php?action={R:2}&value={R:3}&{R:4}"/> </rule> <rule name="plugin"> <match url="^(.*/)*([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+).html\?*(.*)$"/> <action type="Rewrite" url="{R:1}/plugin.php?id={R:2}:{R:3}&{R:4}"/> </rule> </rules> </rewrite> </system.webServer> </configuration>
提示1、<rule>节点的name不能重复。
提示2、<match>里的url是一个正则表达式,实例里^(.*)t/([0-9,a-z]*)是一个常用的句式。
^匹配域名开头,如:http://u.odweb.cn/,注意域名后面有个斜杠/。
(.*)匹配任何字符。
([0-9,a-z]*)匹配任何数字和字母。
因此,^(.*)t/([0-9,a-z]*) 可以匹配如下的访问网址(假如网站域名是u.odweb.cn):
提示3、<action type="Rewrite" ...>表示执行的类型是重写,里面的url是实际网址,{R:1}/list.asp?id={R:2} 的解释如下:
{R:1}对应<match>里的url的第一个括号内容,{R:2}对应<match>里的url的第二个括号内容,如果有{R:3}、{R:4},如此类推。
所以,如果假如用户访问的网址是
http://u.odweb.cn/t/123
http://u.odweb.cn/news/t/a1
那么,其对应的实际网址是
http://u.odweb.cn/news_show.asp?id=123
http://u.odweb.cn/news/news_show.asp?id=a1
提示4、按照上面的解释,你应该差不多能读懂实例的rule2重写规则了。
$,这是个结束符,表示匹配的url到此结束,后面没有其他字符了。
([0-9]+) 表示匹配任何数字。
\.html 表示匹配 .html。
\?表示匹配一个问号?。
特别要注意,反斜杠\是转义符,因为正则表达式里,一点.是表示匹配任何字符的意思,所以要加上反斜杠对其转义,这样才表示匹配的是一个点.。
同样地,问号?也是一个元符号,它表示匹配前面的子表达式零次或一次,因此,也需要在其前面加上转义符\,这才表示匹配的是一个问号?。
提示5、其他
ignoreCase="false" 表示不能忽略大小写,如果该值设为true,则表示忽略大小写。
appendQueryString="false" 表示不使用url参数。
以上就是伪静态web.config URL重写参数详解的详细内容,更多信息请关注OD云其它相关文章!