国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 建站經(jīng)驗 > 正文

玩轉(zhuǎn)asp.net的URL Rewriting

2024-04-25 19:54:05
字體:
供稿:網(wǎng)友

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

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

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

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

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

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

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

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

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

接者,設(shè)定處理HttpApplication.BeginRequest或是HttpApplication.AuthorizeRequest事件(多數(shù)的模組都是處理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設(shè)定中,若是IIS 7.0,則要設(shè)在system.webServer/modules中。

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

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

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

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

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 水城县| 库尔勒市| 于都县| 布拖县| 洛南县| 肃南| 文化| 耒阳市| 惠来县| 通许县| 麻江县| 邯郸市| 即墨市| 宝清县| 梨树县| 嘉定区| 翁牛特旗| 乌鲁木齐市| 潍坊市| 沧州市| 阿坝县| 四平市| 冷水江市| 抚松县| 湖州市| 雷州市| 华阴市| 广河县| 香河县| 南康市| 永州市| 夏邑县| 大悟县| 万安县| 南和县| 西峡县| 玉山县| 林周县| 花莲市| 周宁县| 华容县|