关注UrlReWriter技术很久了,首先就是在博客园里接触到的,之后在其他博客网站也看到了相应的应用。
UrlReWriter,简单的例子就是譬如将Article.Aspx?ArticleID=20类似的地址转成一个虚拟地址,比如Article20.htm或者Article/20.htm,这样浏览器读Article20.htm或Article/20.htm这个地址就可以将它转向真实的地址Article.Aspx?ArticleID=20。
这样做的好处是便于搜索引擎搜索到这篇文章的内容,也有利于用户理解网页地址便于记忆,也安全,隐藏了真实地址。
之前就看到了微软MSDN里关于UrlReWriter的介绍,不过语言晦涩,生硬难懂,以至于后来放弃了对它的研究。后来也看过别人写的一些总结,了解到可以用一个DLL组件引用,不用再自己写程序去实现UrlReWriter了。今天突然想用在主页大巴里面,于是再次拿起来,发现用组件实现起来非常简单。
组件我了解到的有两个,一个是微软的UrlReWriter.DLL,一个是 老外写的开源,专提供Asp.Net2.0的UrlRewritingNet,正合我意,呵呵。
使用方法都是网上搜的,别人写的http://www.hzpal.com/Discuss/DotNet/459.aspx(其实是博客园里的人写的,只不过今天博客园打不开)。我总结一下。
1.将UrlRewritingNet.UrlRewriter.dll拷到bin目录下
2.在web.config里进行相关的配置
3.拷贝urlrewritingnet.xsd文件(这一步我没做,因为别人也没写拷到哪里,不过似乎没影响,有问题再说,呵呵)
4.定义Url重写规则(就是你Aspx文件中的链接改成重写后的地址,我的理解是这个意思)
管它的呢,反正能实现就对头。解释:
<add name="Rewrite" virtualUrl="^~/(.*)/Detail(.*).htm" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Default.aspx?type=$1&id=$2" ignoreCase="true" />
<add name="Rewrite" virtualUrl="^~/(.*)/Detail(.*).htm" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Default.aspx?type=$1&id=$2" ignoreCase="true" />
里(.*)表示参数,也就是重写后的地址格式,比如Detail(.*).aspx就可以将Detail1.Aspx转成真实地址。$1表示第1个参数。这里参数是遵循规则式写法的,比如(.[0-9]*)表示数字。
此外还要在IIS\你的站点\属性\主目录\配置\映谢 加入一个和aspx 页面的配置相同的扩展名项htm。注意“确认文件是否存在”不要勾选,否则会出现找不到文件。
最后一步是将Aspx页中输出的地址那里改成相应的重写地址,比如<a href=Detail<%# DataBinder.Eval(Container,"DataItem.ID")%>.htm>
我经过以上几步就可以实现UrlReWriter了。
不过据说放了DATAGRID,有分页的,你点到下一页就发现,晕倒,又出问题了。不过俺没碰到。
如果你碰到的话,可以参考这里: http://www.dowebs.net/forums/index.php?showtopic=345,就是建立自己的HtmlForm。
不过据说放了DATAGRID,有分页的,你点到下一页就发现,晕倒,又出问题了。不过俺没碰到。
如果你碰到的话,可以参考这里: http://www.dowebs.net/forums/index.php?showtopic=345,就是建立自己的HtmlForm。