Apache支持URL重写,IIS也支持URL重写,不过IIS上的重写组件一般不是免费的,这是个很让人头疼的问题。还好进入.net时代以后,可以写自己的重写规则了,方法网上有很多种,这里介绍使用UrlRewritingNet进行重写。
1、到官方网站下载dll:
http://www.urlrewriting.net/159/en/downloads.html
在这个页面还可以找到源文件和官方提供的例子,有兴趣的可以下下来看一下。
2、引用到网站中。
3、修改web.config
(1)添加下边这段到configSections节点中:
<section name="urlrewritingnet" requirePermission="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter"/>
(2)添加下边这段到configuration节点中:
<urlrewritingnet configSource="config\Rewrite.config"/>
在这里,我专门为重写规则定义了一个配置文件,放在根目录的config文件夹下,这个位置和文件名可以修改成自己的,也可以直接把重写规则添加到web.config中,可以查看官方提供的例子。
(3)在Rewrite.config中添加规则,这里我举几个例子:
<?xml version="1.0" encoding="utf-8"?> <urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" defaultPage = "Default.aspx" defaultProvider="RegEx" xmlns="http://www.urlrewriting.net/schemas/config/2006/07" > ? <rewrites> ??? <add name="News"? virtualUrl="^~/News(\/)?$" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/WebRoot/List.aspx" ignoreCase="true" /> ??? <add name="NewsList"? virtualUrl="^~/NewsList_(\d+).aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/WebRoot/List.aspx?simplename=News&page=$1" ignoreCase="true" /> ??? <add name="NewsInfo"? virtualUrl="^~/View_(\d+).aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/WebRoot/Single.aspx?id=$1" ignoreCase="true" /> ? </rewrites> </urlrewritingnet>
在里把对News目录的访问,重写到WebRoot/List.aspx。
对单篇文章View的访问,重写到WebRoot/Single.aspx。
注:重写目录需要IIS开启通配符映射,并不检查是否文件真实存在。
这里用到了正则表达式,这方面我还需要要加强学习,有些弄了好几天才搞明白怎么写规则。
当然也可以使用编程的方式,添加重写规则,更多的看一下官方提供的例子吧。当然也欢迎和我讨论。
关键字: UrlRewrite URL重写
有时间来讨论一下,今天回家!
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论