<menu id="ocigx"><listing id="ocigx"><em id="ocigx"></em></listing></menu><em id="ocigx"><track id="ocigx"><strong id="ocigx"></strong></track></em>
<ins id="ocigx"></ins>

<samp id="ocigx"></samp>

<mark id="ocigx"><ruby id="ocigx"><legend id="ocigx"></legend></ruby></mark><bdo id="ocigx"></bdo>
      <kbd id="ocigx"></kbd>
      首頁 > 運營 > 建站經驗 > 正文

      玩轉asp.net的URL Rewriting

      2023-05-08 18:33:58
      字體:
      來源:轉載
      供稿:網友

      URL Rewriting,這個好像似曾相識,又覺得很陌生的技術,已經隨著資訊安全與SEO (Search Engine Optimization)的腳步,逐漸影響每個Web Developer,不論你是走哪個技術的,基本上都很難不去重視它,因為它其實可以幫你很多忙。光是一個REST的URL樣式,就可以讓很多人眼睛為之一亮。

      試想,如果你的網站有某支URL是長這樣好看:
      http://www.cuoxin.com/myblog/blog.aspx?id=18472938290&postdate=20090404

      還是這樣好看:
      http://www.crfew.com/myblog/2009/04/04/18472938290.aspx

      又或者,使用者是否可以用這樣的輸入URL方式:
      http://www.crfew.com/productinfo/MP3

      去列出他想要搜尋的MP3 Player的型錄,還是要使用者去打:
      http://www.crfew.com/productinfo/search.aspx?keyword=MP3這樣的URL?

      我想對行銷或消費者行為有概念的人來看的話,答案就很明顯了。

      URL Rewriting的強項,就是將外表的URL,轉換成內部自己看的到的URL再做處理,可以讓內部的URL繼續使用,又可以讓外部的URL具親和性,因此URL Rewriting現在已經逐漸成為網站開發人員必須要知道的技術之一,而且現在其實已經有很多URL Rewriting的模組可以使用了,例如UrlRewriting.Net這個套件,或是IIS 7.0中的URL Rewriting Module等。

      不過,如果能夠自己走一遭的話,會更了解URL Rewriting是什么,而且對于網路上的URL Rewriting模組,也會更具精確的掌握力(以下以ASP.NET為主要說明的技術,其他的語言請參照手冊,找出相對應的功能)。

      首先,URL Rewriting是作為外部與內部URL要求的轉換器,它需要過濾所有的URL,來執行重轉向的動作,因此它比較適合生存在Web Server的執行過程中,以ASP.NET來說,使用HTTP Module即可處理這方面的工作(HTTP Handler較不適合)。

      接者,設定處理HttpApplication.BeginRequest或是HttpApplication.AuthorizeRequest事件(多數的模組都是處理HttpApplication.AuthorizeRequest事件):

      
       
      1. public void Init(HttpApplication context)   
      2. {   
      3.      context.AuthorizeRequest += new EventHandler(AppAuthorizeRequest);   
      4. }  

      然后再于事件常式中,呼叫HttpApplication.Context.RewritePath()即可:

      
       
      1. public void AppAuthorizeRequest(object sender, EventArgs e)   
      2. {   
      3.      (sender as HttpApplication).Context.RewritePath("~/MyHandler.aspx");   
      4. }  

      然后,在Web.config中,將這個模組掛到system.web/httpModules設定中,若是IIS 7.0,則要設在system.webServer/modules中。

      
       
      1. <system.webServer>   
      2.      <validation validateIntegratedModeConfiguration="false" />   
      3.      <modules>   
      4.          <add name="UrlRewritingHandler" type="UrlRewritingModule" />   
      5.      </modules>   
      6. </system.webServer>  

      然后執行這個Web Application,不論你輸入哪個URL路徑,都會被導向到MyHandler.aspx中(當然,你的專案中要有MyHandler.aspx這個網頁)。

      URL Rewriting其實技術上就是這樣而已,透過HttpApplication.Context.RewritePath()將要求的URL傳到指定的網頁來處理,然而在開發實務上,URL Rewriting要考量的其實很多:

      由于每個URL都會被處理,那如果URL指向的是圖片,檔案,scripts或其他資源時要如何處理? 是否有特殊要排除的路徑? 執行URL Rewriting時,URL的格式要怎么設計才會符合需求? 由于URL被重寫時,<form>的action屬性會反應內部的URL,而不是外部的URL,此時要如何處理?

      URL Rewriting對效能很要求,因為它要處理每一個URL要求,而不是選擇性不處理。

      另外,URL也不是一定要硬性的做Rewriting,部份需要排除的就不需要做Rewriting,或者你有某種格式的URL是要做重導向(HTTP 302)的話,也可以直接輸出HTTP 302訊息要求瀏覽器重導向即可,切記,不要在URL Rewriting中加太多的判斷條件,也不要在URL Rewriting中做太耗時間的事,那只會拖慢URL的處理速度(例如還要連資料庫存取資料這種事)。

      發表評論 共有條評論
      用戶名: 密碼:
      驗證碼: 匿名發表