在ASP.Net2.0中使用UrlRewritingNet实现链接重写(转)
生活随笔
收集整理的這篇文章主要介紹了
在ASP.Net2.0中使用UrlRewritingNet实现链接重写(转)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在ASP.Net2.0中使用UrlRewritingNet實現鏈接重寫 很多時候我們需要鏈接轉向(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文件
<?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>
示例程序
我們做了一個按查詢字符串的輸入顯示對應日期的頁面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));
????}
常規訪問方式: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
大家可以看到實際的訪問效果是一致的。
示例文件中還有一個股票信息查看的例子:
http://localhost/UrlRewritingTest/stock600616.aspx?= http://localhost/UrlRewritingTest/stockinfo.aspx?code=600616
示例程序下載:/Files/heekui/UrlRewritingTest.rar
讓我們看兩個例子:
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>
示例程序
我們做了一個按查詢字符串的輸入顯示對應日期的頁面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));
????}
常規訪問方式: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
大家可以看到實際的訪問效果是一致的。
示例文件中還有一個股票信息查看的例子:
http://localhost/UrlRewritingTest/stock600616.aspx?= http://localhost/UrlRewritingTest/stockinfo.aspx?code=600616
示例程序下載:/Files/heekui/UrlRewritingTest.rar
總結
以上是生活随笔為你收集整理的在ASP.Net2.0中使用UrlRewritingNet实现链接重写(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 索引原理,查询机制(转)
- 下一篇: 《数据中心布线系统的设计与施工技术白皮书