波斯马BOSSMA Information Technology

asp.net中使用UrlRewritingNet重写URL

发布时间:2010年1月31日 / 分类:ASP.NET / 14,424 次浏览 / 评论

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&amp;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开启通配符映射,并不检查是否文件真实存在。

这里用到了正则表达式,这方面我还需要要加强学习,有些弄了好几天才搞明白怎么写规则。

当然也可以使用编程的方式,添加重写规则,更多的看一下官方提供的例子吧。当然也欢迎和我讨论。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯马,原文地址《asp.net中使用UrlRewritingNet重写URL

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

目前有1 条评论

  1. MJ 0楼:

    有时间来讨论一下,今天回家!

发表评论