常常有些人會問如何隱藏 Querystring,原因是 Querystring 裡面包含一些參數不想被使用者知道。以下文章就介紹如何使用 UrlRewriter.NET 套件,來幫助我們實現 Url Rewriting 將 Querystring 隱藏起來。
- 首先至 Open Source URL Rewriter for .NET / IIS / ASP.NET 下載 UrlRewriter.NET 套件
(點擊 Download 圖示)
(點擊 binaries and source code 連結至 SourceForge 網站準備下載)
(下載 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>畫面:
- 撰寫 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: }結果畫面如下:
沒有留言:
張貼留言