在ASP.Net2.0中使用UrlRewritingNet实现链接重写
来源:互联网 发布:javascript for循环 编辑:程序博客网 时间:2024/06/04 23:34
很多时候我们需要链接转向(Url Rewriting),例如二级域名转向、文章访问链接等场合。
让我们看两个例子:
1 你现在看到的当前作者的博客园的域名:
http://heekui.cnblogs.com 实际上是 http://www.cnblogs.com/heekui 的一种链接重写(Url Rewriting)。
2 codeproject上的文章,我们获取的地址都是以文章主要关键字做的网页名称:
http://www.codeproject.com/cs/webservices/wsdlparser.asp
个人觉得实际的文章链接可能是如下格式(纯属猜想)
http://www.codeproject.com/news.asp?id=123456
那么如何在Asp.net2.0中如何实现链接重写呢?
可以采用UrlRewritingNet.UrlRewriter.dll来轻松实现
UrlRewritingNet.UrlRewriter.dll 可从其官方网站下载:http://www.urlrewriting.net
我们要做的就是进行Web.Config文件的设置
0 设置之前需要添加引用:UrlRewritingNet.UrlRewriter.dll
1 <configSections>间添加:
<configSections>
<section name="urlrewritingnet" restartOnExternalChanges="true" requirePermission="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter"/>
</configSections>
2 添加httpModules
<httpModules>
<add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter"/>
</httpModules>
3 添加链接重写的设置
<urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" defaultPage="default.aspx" defaultProvider="RegEx" xmlns="http://www.urlrewriting.net/schemas/config/2006/07">
<rewrites>
<add name="Rewrite1" virtualUrl="^http/://(.*)/UrlRewritingTest/test.aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/default.aspx" rewrite="Domain" ignoreCase="true"/>
<add name="Rewrite2" virtualUrl="^http/://(.*)/UrlRewritingTest/test1.aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/info.aspx?year=2007&month=3&day=9" rewrite="Domain" ignoreCase="true"/>
</rewrites>
</urlrewritingnet>
完整的一个Web.Config文件
示例程序
我们做了一个按查询字符串的输入显示对应日期的页面info.aspx
常规访问方式:http://localhost/UrlRewritingTest/info.aspx?year=2007&month=03&day=08
页面重写方式1:http://localhost/UrlRewritingTest/test20070308.aspx
页面重写方式2:http://localhost/UrlRewritingTest/2007/03/08/info.aspx
大家可以看到实际的访问效果是一致的。
示例文件中还有一个股票信息查看的例子:
让我们看两个例子:
1 你现在看到的当前作者的博客园的域名:
http://heekui.cnblogs.com 实际上是 http://www.cnblogs.com/heekui 的一种链接重写(Url Rewriting)。
2 codeproject上的文章,我们获取的地址都是以文章主要关键字做的网页名称:
http://www.codeproject.com/cs/webservices/wsdlparser.asp
个人觉得实际的文章链接可能是如下格式(纯属猜想)
http://www.codeproject.com/news.asp?id=123456
那么如何在Asp.net2.0中如何实现链接重写呢?
可以采用UrlRewritingNet.UrlRewriter.dll来轻松实现
UrlRewritingNet.UrlRewriter.dll 可从其官方网站下载:http://www.urlrewriting.net
我们要做的就是进行Web.Config文件的设置
0 设置之前需要添加引用:UrlRewritingNet.UrlRewriter.dll
1 <configSections>间添加:
<configSections>
<section name="urlrewritingnet" restartOnExternalChanges="true" requirePermission="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter"/>
</configSections>
2 添加httpModules
<httpModules>
<add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter"/>
</httpModules>
3 添加链接重写的设置
<urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" defaultPage="default.aspx" defaultProvider="RegEx" xmlns="http://www.urlrewriting.net/schemas/config/2006/07">
<rewrites>
<add name="Rewrite1" virtualUrl="^http/://(.*)/UrlRewritingTest/test.aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/default.aspx" rewrite="Domain" ignoreCase="true"/>
<add name="Rewrite2" virtualUrl="^http/://(.*)/UrlRewritingTest/test1.aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/info.aspx?year=2007&month=3&day=9" rewrite="Domain" ignoreCase="true"/>
</rewrites>
</urlrewritingnet>
完整的一个Web.Config文件
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="urlrewritingnet" restartOnExternalChanges="true" requirePermission="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter"/>
</configSections>
<urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" defaultPage="default.aspx" defaultProvider="RegEx" xmlns="http://www.urlrewriting.net/schemas/config/2006/07">
<rewrites>
<add name="Rewrite1" virtualUrl="^http/://(.*)/UrlRewritingTest/test.aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/default.aspx" rewrite="Domain" ignoreCase="true"/>
<add name="Rewrite2" virtualUrl="^http/://(.*)/UrlRewritingTest/test1.aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/info.aspx?year=2007&month=3&day=9" rewrite="Domain" ignoreCase="true"/>
<add name="Rewrite3" virtualUrl="^http/://(.*)/UrlRewritingTest/test(/d{4})(/d{2})(/d{2}).aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/info.aspx?year=$2&month=$3&day=$4" rewrite="Domain" ignoreCase="true"/>
<add name="Rewrite4" virtualUrl="^http/://(.*)/UrlRewritingTest/(/d{4})/(/d{2})/(/d{2})/info.aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/info.aspx?year=$2&month=$3&day=$4" rewrite="Domain" ignoreCase="true"/>
<add name="Rewrite5" virtualUrl="^http/://(.*)/UrlRewritingTest/stock(/d{6}).aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/stockinfo.aspx?code=$2" rewrite="Domain" ignoreCase="true"/>
</rewrites>
</urlrewritingnet>
<appSettings/>
<system.web>
<httpModules>
<add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter"/>
</httpModules>
<compilation debug="true"/>
</system.web>
</configuration>
<configuration>
<configSections>
<section name="urlrewritingnet" restartOnExternalChanges="true" requirePermission="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter"/>
</configSections>
<urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" defaultPage="default.aspx" defaultProvider="RegEx" xmlns="http://www.urlrewriting.net/schemas/config/2006/07">
<rewrites>
<add name="Rewrite1" virtualUrl="^http/://(.*)/UrlRewritingTest/test.aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/default.aspx" rewrite="Domain" ignoreCase="true"/>
<add name="Rewrite2" virtualUrl="^http/://(.*)/UrlRewritingTest/test1.aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/info.aspx?year=2007&month=3&day=9" rewrite="Domain" ignoreCase="true"/>
<add name="Rewrite3" virtualUrl="^http/://(.*)/UrlRewritingTest/test(/d{4})(/d{2})(/d{2}).aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/info.aspx?year=$2&month=$3&day=$4" rewrite="Domain" ignoreCase="true"/>
<add name="Rewrite4" virtualUrl="^http/://(.*)/UrlRewritingTest/(/d{4})/(/d{2})/(/d{2})/info.aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/info.aspx?year=$2&month=$3&day=$4" rewrite="Domain" ignoreCase="true"/>
<add name="Rewrite5" virtualUrl="^http/://(.*)/UrlRewritingTest/stock(/d{6}).aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/stockinfo.aspx?code=$2" rewrite="Domain" ignoreCase="true"/>
</rewrites>
</urlrewritingnet>
<appSettings/>
<system.web>
<httpModules>
<add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter"/>
</httpModules>
<compilation debug="true"/>
</system.web>
</configuration>
示例程序
我们做了一个按查询字符串的输入显示对应日期的页面info.aspx
protected void Page_Load(object sender, EventArgs e)
{
string strYear = Request.QueryString["year"].ToString();
string strMonth = Request.QueryString["month"].ToString();
string strDay = Request.QueryString["day"].ToString();
Response.Write(string.Format("你输入的日期是{0}年{1}月{2}日",strYear,strMonth,strDay));
}
{
string strYear = Request.QueryString["year"].ToString();
string strMonth = Request.QueryString["month"].ToString();
string strDay = Request.QueryString["day"].ToString();
Response.Write(string.Format("你输入的日期是{0}年{1}月{2}日",strYear,strMonth,strDay));
}
常规访问方式:http://localhost/UrlRewritingTest/info.aspx?year=2007&month=03&day=08
页面重写方式1:http://localhost/UrlRewritingTest/test20070308.aspx
页面重写方式2:http://localhost/UrlRewritingTest/2007/03/08/info.aspx
大家可以看到实际的访问效果是一致的。
示例文件中还有一个股票信息查看的例子:
- 在ASP.Net2.0中使用UrlRewritingNet实现链接重写
- 在ASP.Net2.0中使用UrlRewritingNet实现链接重写
- 在ASP.Net2.0中使用UrlRewritingNet实现链接重写
- 在ASP.Net2.0中使用UrlRewritingNet实现链接重写
- 在ASP.Net2.0中使用UrlRewritingNet实现链接重写
- asp.net中使用UrlRewritingNet重写URL
- 在ASP.NET2.0中实现URL重写
- UrlRewritingwithRegexforASP.NET2.0(在asp.net2.0中使用正规表达式建立URL重写)
- Asp.net2.0中如何实现的url重写!
- 在asp.net2.0中使用Castle
- UrlRewritingNet 完美实现 ASP.NET 2.0 中的URL重写(映射)
- UrlRewritingNet 完美实现 ASP.NET 2.0 中的URL重写(映射)
- UrlRewritingNet 完美实现 ASP.NET 2.0 中的URL重写(映射)
- UrlRewritingNet 完美实现 ASP.NET 2.0 中的URL重写(映射)
- UrlRewritingNet 完美实现 ASP.NET 2.0 中的URL重写(映射)
- UrlRewritingNet 完美实现 ASP.NET 2.0 中的URL重写(映射)
- UrlRewritingNet 实现ASP.NET 2.0 中的URL重写
- UrlRewritingNet 完美实现 ASP.NET 2.0 中的URL重写(映射)
- CString 操作指南
- c# 线程同步: 详解lock,monitor,同步事件和等待句柄以及mutex
- 局域网内机器对外开放服务
- Asterisk基本配置
- JDK6的新特性之八:嵌入式数据库Derby
- 在ASP.Net2.0中使用UrlRewritingNet实现链接重写
- ASP分页代码,已经写成类了,值得参考
- 再建个Blog,备份用……
- ZERO网络漫画采集助手[免费软件]C#演示版0.2.1
- JAVA正则表达式入门
- Java实现任意文件在bmp中的隐藏与导出
- 应用程序框架:分层和层间数据传递(上)
- asp.net用url重写URLReWriter实现任意二级域名
- 网易也出搜索了