簡體   English   中英

使用URL重寫從asp.net中的子域提供靜態內容

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM