在ASP.Net2.0中使用UrlRewritingNet實現連結重寫

來源:互聯網
上載者:User
很多時候我們需要連結轉向(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&amp;month=3&amp;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&amp;month=3&amp;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&amp;month=$3&amp;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&amp;month=$3&amp;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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.