|
ISAPI_Rewrite是一個(gè)較為好用的URL重寫組件,安裝和配置都比較簡(jiǎn)單,防盜鏈的設(shè)置也極其簡(jiǎn)單。
問(wèn)題
如何獲取被ISAPI_Rewrite重寫后的URL。
測(cè)試環(huán)境:IIS6中使用ISAPI_Rewrite對(duì)Default.ASPx進(jìn)行重寫,重寫后的地址為:Index-After-ReWriter.html。
需要獲取重寫后的地址,即Index-After-ReWriter.html。
一些彎路
首先想到的就是Request對(duì)象,如Request.Url和Request.RawUrl。測(cè)試后發(fā)現(xiàn)獲取到的地址都是Default.ASPx。上網(wǎng)找了找ISAPI_Rewrite的處理流程圖,找到了下面這個(gè)圖片。
那么再來(lái)看下IIS處理ASPx頁(yè)面的流程圖。
在提交到ASP.NET模塊處理前,同樣都是ISAPI擴(kuò)展的ASPNET_isapi.dll和ISAPI_Rewrite.dll,從第一張圖中可以看出ISAPI_Rewrite.dll解析了重寫后的URL(即測(cè)試環(huán)境中的Index-After-ReWriter.html),即解析成Default.ASPx后再轉(zhuǎn)由ASPNET_isapi.dll進(jìn)行處理。真的是這樣嗎?去IIS中去一看便知。
注意是在IIS中的網(wǎng)站全局屬性中查看,如果需要使重寫模塊對(duì)單一的網(wǎng)站起作用那么需要單獨(dú)對(duì)網(wǎng)站進(jìn)行設(shè)置。那么在Request對(duì)象中還會(huì)保存有重寫后的URL地址嗎?
又上網(wǎng)找了找,正如博文當(dāng)你的博客文章的作者變成“編輯整理”,你作何感想?中提到的一樣,帶來(lái)的一個(gè)現(xiàn)象是點(diǎn)了前兩頁(yè)獲取到的信息的都是這篇文章: 使用Request.RawUrl獲取當(dāng)前請(qǐng)求重寫(UrlRewrite)后的Url。
我基本保持文章中提供的源代碼測(cè)試了下。
protected override void OnInit(EventArgs e){
string a = Request.ServerVariables["SCRIPT_NAME"];
//string b = Request.ServerVariables["QUERY_STRING"];
//string c = Request.Url.AbsoluteUri;
//string d = Request.ServerVariables["HTTP_URL"];
string f = Request.Url.ToString();
base.OnInit(e);
}
NET技術(shù):獲取ISAPI_Rewrite重寫后的URL,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。