URL重寫技術總結


URL重寫技術總結

概要什么是url重寫?

URL 重寫是截取傳入 Web 請求並自動將請求重定向到其他 URL 的過程。比如瀏覽器發來請求 hostname/101.html ,服務器自動將這個請求中定向為http://hostname/list.aspx ?id=101

url重寫的優點在於:

1、縮短url,隱藏實際路徑提高安全性。

2、易於用戶記憶和鍵入。 

3、易於被搜索引擎收錄。

正文實現url重寫的基本方法:

一、 下載msURLRewriter.dll,放到你的web程序的bin

下載地址1

download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi 

下載地址2

或者直接使用DLL:http://files.cnblogs.com/yun_shuai/URLRewriter.rar 含有上面2DLL

二、 webconfig中配置:

1 <configSections> 節點中增加:

   <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler,URLRewriter"/>

注:一定要正確,名字(RewriterConfig)要與下面的重寫名稱<RewriterConfig>一致。 

 

 

2<configuration>根節點中增加URL重寫的配置:  可以使用正則表達式

<RewriterConfig>  <Rules>

  <RewriterRule>    <LookFor>~/ (\d{2})/(\d+)\.html</LookFor>    <SendTo>~/ShowBlogContent.aspx?year=$1&month=$2</SendTo>   </RewriterRule>

  <RewriterRule>    <LookFor>~/(\d+)\.html</LookFor>    <SendTo>~/ShowBlogContent.aspx?year=$1</SendTo>   </RewriterRule>  </Rules>

</RewriterConfig>

注:每一個URL都要有頭 ( <RewriterRule>),有尾(</RewriterRule>)

多參數直接用&相連接,切勿只用&

盡量用少的語句,重寫多的頁面URL

 

關鍵句解析

<LookFor>~ShowBlog/(\d{2})/(\d+)\.html</LookFor>  <SendTo>~/ShowBlogContent.aspx?year=$1&month=$2</SendTo>

①、<LookFor>~ ShowBlog /(\d{2})/(\d+)\.html </LookFor> 表示,用戶請求的urlShowBlog可任意寫)。~/(\d+)\.htmlurl中文件名匹配的正則表達式(此處為字母d開頭,后面跟一個或多個數字,{2}表示數字的位數是兩位,並以.html結尾。用戶也可根據自己的需要自行設定)。 ②、<SendTo>~/ShowBlogContent.aspx?year=$1&month=$2</SendTo>,表示當服務器接收到符合上面條件的請求后如何重寫url。此處表示訪問ShowBlogContent.aspx並傳入參數yearmonth,其值$1將用用戶請求的文件名中的第一個數(\d{2})字來表示$2為第二個數字(\d+),多參以此類推。 ③、例如用戶輸入 hostname/d11.aspx,服務器會把他重寫為http://hostname/default.aspx?id=11。換句話說用戶輸入http://hostname/d11.aspx,實際訪問的是http://hostname/default.aspx?id=11。這樣就起到了隱藏真實文件名,並便於用戶記憶的作用。

注:也可以不用帶參數,原理同上。

例:“<LookFor>~ShowBlog.html</LookFor>  <SendTo>~/ShowBlogContent.aspx</SendTo>

 

3<httpModules增加   <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />

   或者   <httpHandlers增加   <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />

注:這是對以.html結尾的URL進行匹配重寫(編者更傾向於第二種方法)。

 

4、修改頁面中的請求路徑URL

<a href=" ShowBlog /<%=Request["BlogType"] %>/<%#Eval("BlogID") %>.html">

 

5、完成

 

6其他問題:

   回發后真實路徑再現:

      1、將ActionlessForm.dll添加到項目的bin文件夾

      2、在aspx網頁的代碼中加<%@ Register TagPrefix="RW" Namespace="ActionlessForm" Assembly="ActionlessForm" %>

      3、然后將form標簽改為RW:Form(注意開始和結束都要改),TagPrefix可以自定義

注:編者暫時沒有用到,讀者可以根據個人需要自行修改。

 

 

三、總結

首次重寫URL的時候一定要每一個細節都要考慮到,特別是路徑的問題,讀者應該有足夠的耐心和細心,這樣才能使自己的努力事半功倍。 

編者參考網址:

1、 偽靜態實現方法_百度文庫

2、 使用URLRewriter實現URL重寫 雲帥工作室 博客園

3、 ASP.NET URL Rewrite. URL重寫_Karl備忘錄_百度空間

4、 談用偽靜態(url重寫)的方法替代生成靜態頁面的好處 - A5站長網

 

 

四、附:詳情見源代碼。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM