之前接了一個專案(在.Net Framework 3.5的時代),業主希望能透過後台的設定,針對不同的客戶產生不同網址的前台系統,例如說,要讓使用者可以用像http://ABC.com/Gamania或是http://ABC.com/HTC等等的網址進入系統。
但是我不可能動態的幫每個使用者都建立一個虛擬目錄,又把檔案複製一份啊~那怎麼辦呢?
之前接了一個專案(在.Net Framework 3.5的時代),業主希望能透過後台的設定,針對不同的客戶產生不同網址的前台系統,例如說,要讓使用者可以用像http://ABC.com/Gamania或是http://ABC.com/HTC等等的網址進入系統。
但是我不可能動態的幫每個使用者都建立一個虛擬目錄,又把檔案複製一份啊~那怎麼辦呢?
只要能把http://ABC.com/Gamania變成http://ABC.com/Default.aspx?ProjectName=Gamania,http://ABC.com/HTC變成http://ABC.com/Default.aspx?ProjectName=HTC,
這樣我就只需要一個Default.aspx,也不用特別為不同的使用者建立虛擬目錄,就能用一份檔案搞定所有使用者啦!!
也就是說,只要能把要讓使用者看的網址做些處理,轉成是系統看得懂的網址就可以了,但是ASP.Net 3.5版好像沒內建這樣的功能啊(苦惱)
後來發現一個Open Source的超方便元件 -- UrlRewriter.NET,目前最新的版本是2.0RC1b6
只要下載所需要的版本,之後將Intelligencia.UrlRewriter.dll檔加入ASP.Net專案的參考,再將web.config做以下調整:
如果IIS用的是7.0之後的版本,則請參考以下設定:
上面的rewrite區段就是利用Regular Expression去針對不同的Url設定不同的Rewrite規則,而關於rewrite區段的設定參數和範例則可以參考 UrlRewriter.NET 參數設定與範例
設定完的成品如下(為保護當事人,部份網址予以打上馬賽克):
設定完成之後就可以仿造出不同網址是不同網站的感覺,而且還能避免透露出網址列的參數,真是一舉多得啊!!