溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ASP.NET下用URLRewriter重寫二級(jí)域名的步驟

發(fā)布時(shí)間:2021-09-01 11:02:51 來源:億速云 閱讀:178 作者:chen 欄目:編程語言

這篇文章主要介紹“ASP.NET下用URLRewriter重寫二級(jí)域名的步驟”,在日常操作中,相信很多人在ASP.NET下用URLRewriter重寫二級(jí)域名的步驟問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”ASP.NET下用URLRewriter重寫二級(jí)域名的步驟”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

這里要求對(duì)域名進(jìn)行重寫,實(shí)現(xiàn)http://1234.abc.com/ 到 ~/Defa.aspx?id=1234的重寫。

***:域名

首先域名要支持泛解悉,就是域名解悉的主機(jī)名為星號(hào)*,例:*.abc.com。如下圖

ASP.NET下用URLRewriter重寫二級(jí)域名的步驟


這樣能保證你在瀏覽器地址欄輸入任何前綴,DNS都會(huì)把它們指向到你指定的IP地址上。

第二:IIS設(shè)置(Win2003 + IIS 6為例)

(1)網(wǎng)站必須為Web服務(wù)器的默認(rèn)站點(diǎn),即端口號(hào)為80,主機(jī)頭為空的站點(diǎn)。如下圖所示。

ASP.NET下用URLRewriter重寫二級(jí)域名的步驟


該站點(diǎn)接收所有對(duì)該服務(wù)器的HTTP請(qǐng)求(其它設(shè)置為主機(jī)頭的站點(diǎn)除外)。所以任何二級(jí)域名訪問該服務(wù)器都會(huì)由該站點(diǎn)進(jìn)行處理。

(2)另外要在站點(diǎn)的“通配符應(yīng)用程序映射”列表中添加ASP.NET的Web請(qǐng)求處理程序aspnet_isapi.dll。如下圖所示。

ASP.NET下用URLRewriter重寫二級(jí)域名的步驟


在這里的設(shè)置,是讓該站點(diǎn)接到的所有請(qǐng)求都交給aspnet_isapi.dll處理。

第三:修改Microsoft的URLRewriter。

運(yùn)行開源項(xiàng)目URLRewriter。這里需要修改兩個(gè)地方:

(1)BaseModuleRewriter.cs類

 protected virtual void BaseModuleRewriter_AuthorizeRequest(object sender, EventArgs e)    {    HttpApplication app = (HttpApplication) sender;    //Rewrite(app.Request.Path, app);   Rewrite(app.Request.Url.AbsoluteUri, app); // ## ## ## 這里修改了   }

這里將app.Request.Path 替換成了 app.Request.Url.AbsoluteUri

(2)ModuleRewriter.cs類

 protected override void Rewrite(string requestedPath, System.Web.HttpApplication app)    {    // log information to the Trace object.    app.Context.Trace.Write("ModuleRewriter", "Entering ModuleRewriter");    // get the configuration rules   RewriterRuleCollection rules = RewriterConfiguration.GetConfig().Rules;   // iterate through each rule...   for (int i = 0; i < rules.Count; i++)    {    // get the pattern to look for, and Resolve the Url (convert ~ into the appropriate directory)    //string lookFor = "^" + RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, rules[i].LookFor) + "$";    string lookFor = "^" + rules[i].LookFor + "$"; // ## ## ## 這里修改了   // Create a regex (note that IgnoreCase is set...)   Regex re = new Regex(lookFor, RegexOptions.IgnoreCase);   // See if a match is found   if (re.IsMatch(requestedPath))    {   // match found - do any replacement needed   string sendToUrl = RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, re.Replace(requestedPath, rules[i].SendTo));    // log rewriting information to the Trace object    app.Context.Trace.Write("ModuleRewriter", "Rewriting URL to " + sendToUrl);   // Rewrite the URL    RewriterUtils.RewriteUrl(app.Context, sendToUrl);   break; // exit the for loop    }    }    // Log information to the Trace object    app.Context.Trace.Write("ModuleRewriter", "Exiting ModuleRewriter");   }

這里將string lookFor = "^" + RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, rules[i].LookFor) + "$";

改成了 string lookFor = "^" + rules[i].LookFor + "$";

這兩個(gè)地方修改完以后,生成項(xiàng)目。將項(xiàng)止目bin/Debug目錄下的URLRewriter.dll文件Copy到我們要重寫URL的項(xiàng)目中。

第四:配置項(xiàng)目

(1)在web.config文件的configSections節(jié)點(diǎn)下添加如下一行代碼

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

這里配置一個(gè)重寫配置的類

(2)修改httpModules節(jié)點(diǎn),在里面添加一行配置代碼

<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />

(3)在主節(jié)點(diǎn)configuration節(jié)點(diǎn)下添加路由規(guī)則,代碼如下:

 <!-- URL重寫 將捕獲頁面轉(zhuǎn)發(fā)到實(shí)際地址  -->     <RewriterConfig>       <Rules>              <RewriterRule>   <LookFor>http://(\w+).abc.com/</LookFor>  <SendTo>~/Defa.aspx?id=$1</SendTo>            </RewriterRule>   </Rules>   </RewriterConfig>   <!-- URL重寫 將捕獲頁面轉(zhuǎn)發(fā)到實(shí)際地址 ( 結(jié)束 )  -->

代碼里一個(gè)RewriterRule節(jié)點(diǎn)就是一個(gè)規(guī)則,這時(shí)只有一個(gè),即把域名中的主機(jī)頭部分做為Defa.aspx頁面的id參數(shù)的值發(fā)送給Defa.aspx頁面。

注意:這里L(fēng)ookFor節(jié)點(diǎn)里的http://(\w+).abc.com/不能少了***的反斜框

OK,一切完工

發(fā)布,上傳到服務(wù)器,測(cè)試一下,如圖

ASP.NET下用URLRewriter重寫二級(jí)域名的步驟

本次測(cè)試需要一個(gè)類庫(kù):URLRewriter.dll (測(cè)試版本 1.0.1495.18710)

到此,關(guān)于“ASP.NET下用URLRewriter重寫二級(jí)域名的步驟”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI