[英]Serving static content from a subdomain in asp.net using URL Rewrite
搜索了幾個小時無濟於事,所以這里去了...
我有一個域每天收到的點擊量很高,有人問我是否可以從子域中提供靜態內容。 由於該站點相當廣泛且已經編寫,因此我想知道是否有任何方法可以使用URL重寫進行更改:
www.example.com/image.gif
至
static.example.com/image.gif
我有一個使用301重定向的解決方案,但是據我了解,這會適得其反,因為每個圖像必須提出2個請求。 我真的不希望瀏覽所有的aspx頁面和CSS來對新的URL進行硬編碼,因為它將導致進一步的問題-網站的某些部分仍在開發中,靜態內容可能隨時更改。 我嘗試使用重寫(而不是重定向)來更改網址,但結果如下:
http://www.example.com/http://static.example.com/image.gif
您將如何實現? 我具有對dns和服務器(win 2008r2 / IIS 7.5)的完全訪問權限,因此,如果URL重寫不能解決問題,則可以進行任何更改。
提前致謝
湯姆
您可以使用HttpModule完成此操作。 下面的示例捕獲對gif文件的所有請求,並將絕對路徑更改為指向承載靜態內容的備用站點。 在HttpModule中嘗試以下方法:
private void Application_BeginRequest(Object source, EventArgs e)
{
// Create HttpApplication and HttpContext objects to access
// request and response properties.
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
string filePath = context.Request.FilePath;
string fullPath = context.Request.Url.AbsoluteUri;
string fileExtension = VirtualPathUtility.GetExtension(filePath);
if (fileExtension.Equals(".gif"))
{
context.Response.ContentType = "image/gif";
context.Response.Redirect(fullPath.Replace("www.example.com", "static.example.com"));
}
}
有關HttpModule的更多信息,請訪問: http : //msdn.microsoft.com/zh-cn/library/ms227673.aspx
我測試了上面的代碼-它可以工作。 我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.