【Henry Liu】ASP.NET 2.0 中的URL 重寫技術
說明:當我在開發一個網站的時候,我遇到了這樣一個問題:
這是一個有多個子域的網站,如:support.henryliu.com,product.henryliu.com,service.henryliu.com,客戶想把這三個子站點指向同一個位置。他要實現無論何時,使用者請求support.henryliu.com/default.aspx時,henryliu.com/support/default.aspx會被執行。 也就是說,他想把henryliu.com/support/default.aspx這個地址隱藏起來,不讓使用者看到。我們把改變原始請求URL的這個過程叫做URL重寫。在這篇文章裡,我將闡述關於URL重寫的技術。
實現URL重寫的幾種方法?
l 利用Application_BeginRequest和HttpContext類的Rewrite方法重寫URL,這種方法比較簡單易懂易用。
l 開發ASP.NET Http Module來達到同樣的目的
l 開發ISAPI過濾器來擷取請求完成重寫
在這裡,我們將就第一種方法來闡述URL重寫的實現
Application_BeginRequest 事件
它是HTTP管線處理被激發的第一個事件,是重寫URL的最佳地方
HttpContext 類
這個類包含有關Http的特定資訊,其中有Http Request,當然也有Response對像。
這個類裡面有一個Current靜態屬性,它裡面包含當前應用程的資訊。RewritePath方法是重寫URL的關鍵。在2.0中有四個簽名:
public void RewritePath(string path);
public void RewritePath(string path, bool rebaseClientPath);
public void RewritePath(string filePath, string pathInfo, string queryString);
public void RewritePath(string filePath, string pathInfo, string queryString, bool setClientFilePath);
按步就搬
1. 新建一個C# Web Application工程
2. 開啟WEB配置檔案,加入下列程式碼
<add key="productsSite" value="products">add>
<add key="servicesSite" value="services">add>
<add key="supportSite" value="support">add>
appSettings>
我們把相對應的資料夾名稱放在這裡,在後面的程式碼中將用到。
3. 在工程裡新增三個資料夾,Products,Support Services
4. 在每個檔案裡面新增一個default.aspx頁面
5. 開啟Global.asax看看事件控制程式碼
6. 把下面的程式碼加到上述事件裡:
host = Request.Url.Host;
originalurl = Request.Url.PathAndQuery;
switch (host)
{
case "products.henryliu.com":
newurl = "~/" +
ConfigurationSettings.AppSettings["productsSite"]
+ originalurl;
break;
case "services.henryliu.com":
newurl = "~/" +
ConfigurationSettings.AppSettings["servicesSite"]
+ originalurl;
break;
case "support.henryliu.com":
newurl = "~/" +
ConfigurationSettings.AppSettings["supportSite"]
+ originalurl;
break;
default:
newurl = "~/" +
ConfigurationSettings.AppSettings["supportSite"]
+ originalurl;
break;
}
HttpContext.Current.RewritePath(newurl);
讓我們再來看看這段程式碼:
首先我們用 Request.Url.Host 屬性得到主機名,如:support.henryliu.com,其次還要獲得當前路徑的查詢字串。Switch語句我們用來根據當前使用者的請求來判斷真正要執行的頁面請求。最後,我們呼叫RewritePath()方法重寫當前請求的URL。
總節:在這篇文章裡我們可以學習到怎樣用Application_BeginRequest 和HttpContext.RewritePah()來重寫URL。這是一個快速實現實際請求頁面和我們看到的URL不同的方法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-330943/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ASP.NET URL Rewrite. URL重寫ASP.NET
- 【ASP.NET Core】URL重寫ASP.NET
- ASP.NET中獲取URL重寫前的原始地址ASP.NET
- IIS7 asp.net URL重寫配置ASP.NET
- ASP.NET 2.0當中的Call back技術與ASP.NET AJAXASP.NET
- ASP.NET中Url重寫後,打不開真正的Html頁面ASP.NETHTML
- nginx url重寫Nginx
- ASP.NET 2.0的URL對映的實現方法ASP.NET
- 如何 把下面這個url 重寫 用response 重寫到請求中...
- ASP.NET 2.0 URL Rewrite 學習總結ASP.NET
- Nginx實現URL重寫Nginx
- URL 重寫新手指南
- Asp.Net MVC2.0 Url 路由入門(轉)ASP.NETMVC路由
- nginx TP5 URL 重寫Nginx
- Nginx實戰(二) URL重寫Nginx
- 使用HttpModule實現URL重寫HTTP
- ASP.NET URL雙向改寫的實現ASP.NET
- PHP實現url重寫和.htaccessPHP
- IIS SSL認證流程& url重寫
- Session,Cookie,jsessionid,Url重寫SessionCookieJS
- 使用 HTTP 模組執行 URL 重寫HTTP
- 請問如何實現URL重寫?
- 在ionic這個框架下(Angular JS),對URL進行重寫,過濾掉URL中的#號框架AngularJS
- 在struts2中實現去掉字尾及url重寫
- ASP.NET 2.0中XSLT的使用ASP.NET
- Nginx URL重寫規則配置詳解Nginx
- Laravel重寫資源路由自定義URLLaravel路由
- JavaScript 中更安全的 URL 讀寫JavaScript
- Git的工作liu'chenGit
- 利用apache的mod_rewrite做URL規則重寫Apache
- ASP.NET 2.0 中的資料訪問ASP.NET
- 應用Url重寫時CSS引用問題CSS
- .htaccess技巧: URL重寫(Rewrite)與重定向(Redirect)
- 【iis】URL重寫可以引用原地址內容
- 前端專案透過‘URL 重寫’部署在 IIS 中,訪問 WebAPI 介面前端WebAPI
- ASP.NET MVC中URL末尾斜槓的實現ASP.NETMVC
- 雲原生技術中臺 CNStack2.0 正式釋出
- ASP.NET 2.0中連線字串的設定ASP.NET字串