一、准备工作
1、到MS站下载URLRewriter文件,本贴提供了下载,请点击最下面的附件(URLRewriter);
2、将URLRewriter添加到你的项目中,或者编译成Dll文件引入到项目中都可以
二、配置工作
1、打开Web.Config文件
2、找到节点<configSections>,再节点中添加此代码<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
结果显示为:
- <configSections>
- ....//这里是系统自动添加的一些代码,这里不进行贴出来。下面“...”都表示系统自带的一些代码,就不再说明
- <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
- </configSections>
3、找到节点<system.web>,再节点中添加如下代码,其结果如下:
- <httpModules>
- <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
- </httpModules>
魔兽世界私服: http://www.lt773.cn
新开魔兽私服: http://www.5858a.cn
搜搜搜魔兽私服: http://www.ssswow.net
千年私服: http://www.bccom.cn
传奇3私服: http://www.cj35.cn
OK,现在基本配置完成,现在就是重写的配置了。
三、URL重写配置
在Web.Config中添加这样的节点
- <RewriterConfig>
- <Rules>
- <RewriterRule>
- <LookFor>静态页地址,显示给用户的地址</LookFor>
- <SendTo>真实地址,网址里的真实地址</SendTo>
- </RewriterRule>
- </Rules>
- </RewriterConfig>
现在我们就主要以Lookfor 和 SendTo 来进行分析,应该如何写
四、具体操作
比如我们希望用这样的地址来代替我们实际的址,如:http://www.5wYw.com/my.html访问,但我们实际地址是:http://www.5wYw.com/user/info.aspx,这时我们的配置文件就可以这样操作
- <LookFor>http://www.5wyw.com/my.html</LookFor>
- <SendTo>http://www.5wyw.com/user/info.aspx</SendTo>
这样就可以实现了伪静态了,这是最简单的一种,下面我们来说说带参数的方法。
如访问一条新闻信息,http://www.5wyw.com/news_1.html表示访问的是:http://www.5wyw.com/news.aspx?id=1这样的地址,配置文件就应该是:
- <LookFor>http://www.5wyw.com/news_(/d{0,9})/.html</LookFor>
- <SendTo>http://www.5wyw.com/news.aspx?id=$1</SendTo>
具我的理解,其实LookFor中的第一个正则表达式就是SendTo的$1,LookFor的第二个正则表达式就是SendTo的$2,具体的正则表达式这里不正详细说明,可以找一下.Net相关的正则表达式,本站提供了一点关于正则表达式的说明:http://bbs.5wyw.com/thread-231-1-1.html
下面来具体说明一下两个参数的配置方法,看代码
- <LookFor>~/news/(/d{0,9})/(/d{0,9})/.html</LookFor>
- <SendTo>~/News.aspx?pageindex=$1&newtype=$2</SendTo>
解释一下。上面我们访问的应该是例如:http://www.5wyw.com/news/1/2.html,实际程序访问的是:http://www.5wyw.com/news.aspx?pageindex=1&newtype=2,意思就是访问新闻第二页,类型为2的新闻列表
五、总结
$1,$2....$n 其实就是对应的LookFor中按正则出现的先后顺序来决定对应的相关参数和值。
若想了解这个重写类具体是如何工作的,可以参见下此贴提供的原理和思路,具体代码可以查看重写类的源代码