Site Meter & 線上人數

tracker

部落格觀察


我的噗浪

Google Latitude

微軟認證



聯絡我 - MSN & Skype & Email



最新回應

簡易的 Url Rewriting 隱藏 Querystring

2008/3/26 00:52| 閱讀數 : 8941 | 4 人收藏 我要推薦 | 14 Comments | 文章分類: ASP.Net Library 訂閱

常常有些人會問如何隱藏 Querystring,原因是 Querystring 裡面包含一些參數不想被使用者知道。以下文章就介紹如何使用 UrlRewriter.NET  套件,來幫助我們實現 Url Rewriting 將 Querystring  隱藏起來。

SNAG-0000

(點擊 Download 圖示)

SNAG-0001

(點擊 binaries and source code 連結至 SourceForge 網站準備下載)

SNAG-0002

(下載 urlrewiternet20rc1b6.zip 最新版本)

  • 下載 urlrewiternet20rc1b6.zip 後,將 UrlRewriterV2\bin\Release\Intelligencia.UrlRewriter.dll 加入參考
  • 設定 Web.config 檔案
</configuration>
  <configSections>
    <section name="rewriter" 
             requirePermission="false" 
             type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
  </configSections>
 
  <system.web>
    <httpModules>
      <add name="UrlRewriter" 
           type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
    </httpModules>
  </system.web>
 
  <rewriter>
    <rewrite url="~/Books/(\d+)/Default.aspx" to="~/Books.aspx?bookID=$1"/>
  </rewriter>
 
</configuration>

 

其中比較注意的是 <rewriter> 區塊的部分,url 表示來源網址,to 表示目的網址。舉例來說,你的網址是 Books/1234/Default.aspx 時,UrlRewiter 就幫你 Url 轉向 Books.aspx?bookID=1234。其中 (\d+) 是一種 Regular Expression(Regex)的表示方法,表示由 0-9 組合而成的字串組合,$1 則代表 url 符合 Regex 的字串變數。當你有多組 Regex,則就會有 $1、$2、$3...以此類推。以下我們實地操作,看看如何應用:

  • 撰寫 Default.aspx 程式碼,主要是提供介面建立連結,如下,:
   1:  <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
   2:   
   3:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   4:   
   5:  <html xmlns="http://www.w3.org/1999/xhtml">
   6:  <head runat="server">
   7:      <title>Untitled Page</title>
   8:  </head>
   9:  <body>
  10:      <form id="form1" runat="server">
  11:      <div>
  12:          <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  13:          <asp:Button ID="Button1" runat="server" Text="查詢" onclick="Button1_Click" />
  14:      </div>
  15:      </form>
  16:  </body>
  17:  </html>

畫面:

SNAG-0003

  • 撰寫 Default.aspx.cs 程式碼,主要目的是收集使用者輸入的查詢條件,將條件傳向 Books.aspx 頁面,如下:
   1:  using System;
   2:  using System.Web.UI;
   3:   
   4:  public partial class _Default : Page
   5:  {
   6:      protected void Page_Load(object sender, EventArgs e)
   7:      {    
   8:      }
   9:   
  10:      protected void Button1_Click(object sender, EventArgs e)
  11:      {
  12:          string url = string.Format("~/Books/{0}/Default.aspx", TextBox1.Text);
  13:          Response.Redirect(url);
  14:      }
  15:  }

 

  • 撰寫 Books.aspx.cs,將收到的 Querystring 在畫面上印出,程式碼如下:
   1:  using System;
   2:  using System.Web.UI;
   3:   
   4:  public partial class Books : Page
   5:  {
   6:      protected void Page_Load(object sender, EventArgs e)
   7:      {
   8:          if (string.IsNullOrEmpty(Request["bookID"]) == false)
   9:          {
  10:              string msg = string.Format("書籍編號: {0}", Request["bookID"]);
  11:              Response.Write(msg);
  12:          }
  13:      }
  14:  }

結果畫面如下:

SNAG-0004

DotBlogs Tags: ASP.NET chhuang Library


關連文章

回應

  • 平凡人 2008/6/25 上午 07:28 回覆

    # re: 簡易的 Url Rewriting 隱藏 Querystring

    站長大大你好~~
    這範例真的太實用了,
    但想請問站長大大,對於那參數的部分~
    可以使用a~z或是a~z+0~9混用嗎?
  • \w 2008/6/25 上午 08:10 回覆

    # re: 簡易的 Url Rewriting 隱藏 Querystring

    to 平凡人 :
    <rewriter> <rewrite url="~/Books/(\w+)/Default.aspx" to="~/Books.aspx?bookID=$1"/> </rewriter>
  • 平凡人 2008/6/25 下午 01:17 回覆

    # re: 簡易的 Url Rewriting 隱藏 Querystring

    感謝站長大大~~
    另一個問題想請教一下站長,
    就是要如何隱藏default.aspx
    http://tw.minwt.com/minwt/default.aspx
    變成
    http://tw.minwt.com/minwt
    而我的主機是租用的,不知該如何設置,還是另有解決之道
  • chhuang 2008/6/25 下午 05:12 回覆

    # re: 簡易的 Url Rewriting 隱藏 Querystring

    參考: http://www.dotblogs.com.tw/chhuang/archive/2008/04/20/2958.aspx

  • dean 2009/1/22 下午 02:03 回覆

    # re: 簡易的 Url Rewriting 隱藏 Querystring

    大大你好,
    不知方便能否請教一問題?
    在你的範例中, Books.aspx是專門接受參數的頁面, 如果一網站中有多頁是專門接受參數的頁面, 那url and to的參數要如何下呢?
    我的網站中有多種module想要變成html, 有房屋產品module, 人才招募module, 列印module...等
    我想應該是要改<rewrite url="~/Books/(\d+)/Default.aspx" to="~/Books.aspx?bookID=$1"/>
    但不知如何改, 能否請你能幫個忙?
  • chhuang 2009/1/22 下午 10:14 回覆

    # re: 簡易的 Url Rewriting 隱藏 Querystring

    不知道你的原始 url 帶參數長得如何?要想變成怎樣?

     

  • dean 2009/1/23 上午 09:53 回覆

    # re: 簡易的 Url Rewriting 隱藏 Querystring

    大大你好,

    以下是我寫的東西, 我沒有試過可不可行, 不過我想應該是不可以吧
    因為要迎合seo, 所以我比較傾向rewriting成htm頁面.
    <rewrite url="~/(.+).htm" to="Case-Detail.aspx?strCaseID=$1"/>
    <rewrite url="~/(.+).htm" to="House-Detail.aspx?strHouseID=$1"/>
    <rewrite url="~/(.+).htm" to="Land-Detail.aspx?strLandID=$1"/>
    Case-Detail.aspx是接受參數處理車子的頁面
    House-Detail.aspx是接受參數處理房屋的頁面
    Land-Detail.aspx是接受參數處理土地的頁面

    我想到是可以改成以下的東西, 但...不是我想要的, 我想要的htm頁面
    <rewrite url="~/(.+).do" to="Case-Detail.aspx?strCaseID=$1"/>
    <rewrite url="~/(.+).php5" to="House-Detail.aspx?strHouseID=$1"/>
    <rewrite url="~/(.+).htm" to="Land-Detail.aspx?strLandID=$1"/>

    請教大大, 我該如何修改???感謝.
  • chhuang 2009/1/28 上午 12:35 回覆

  • dean 2009/1/28 下午 04:33 回覆

    # re: 簡易的 Url Rewriting 隱藏 Querystring

    chhuang大大,
    我已全看完簡易的 Url Rewriting 隱藏 Querystring (一), 簡易的 Url Rewriting 隱藏 Querystring (二), 簡易的 Url Rewriting 隱藏 Querystring (三), 但對於自己需求要如何套用, 還不知道如何做到.....所以可以麻煩你再給我一點教導嗎? 謝謝.
  • Danny 2009/4/11 上午 12:32 回覆

    # re: 簡易的 Url Rewriting 隱藏 Querystring

    Dear Sir:
    請問大大,你知道是什麼原因嗎?

    小弟使用是無法使用的。(如下)
    <rewriter>
    <rewrite url="~/(\d+)/ProdDoc.aspx" to="~/ProdDoc.aspx?PID=$1"/>
    </rewriter>

    可是直接輸入就可以。(如下)
    <rewrite url="~/123/ProdDoc.aspx" to="~/ProdDoc.aspx?PID=123"/>
    </rewriter>
  • chiyuan 2009/7/21 下午 01:17 回覆

    # re: 簡易的 Url Rewriting 隱藏 Querystring

    大大
    那請問要是後面有兩個參數以上呢?


    <rewrite url="~/Books/(\d+)/(\d+)/Default.aspx" to="~/Books.aspx?bookID=$1&typeID=$2"/>

    類似這樣??
    謝謝
  • chhuang 2009/7/21 下午 08:27 回覆

    # re: 簡易的 Url Rewriting 隱藏 Querystring

    to chiyuan : 是的... 你可以自行嘗試看看...

  • jimmy 2009/8/19 下午 12:58 回覆

    # re: 簡易的 Url Rewriting 隱藏 Querystring

    怎麼把UrlRewriterV2\bin\Release\Intelligencia.UrlRewriter.dll 加入參考??
  • chiyuan 2010/2/24 下午 05:31 回覆

    # re: 簡易的 Url Rewriting 隱藏 Querystring

    <rewrite url="~/Books/(\d+)/(\d+)/Default.aspx" to="~/Books.aspx?bookID=$1&amp;typeID=$2"/>


    是連結兩個參數
    要用&amp;
標題 *
名稱 *
Email (將不會被顯示)
Url
回應
登入後使用進階評論
Please add 4 and 3 and type the answer here: