2010-06-05 73 views
1

將Web請求重定向到ASP.NET應用程序到子域的最簡單方法是什麼?ASP.NET重定向請求到子域(博客或www)

如果請求進入URL http://somesite.com/foo.aspx,新的目標網址應該是

  • http://www.somesite.com/foo.aspx
  • http://blog.somesite.com/foo.aspx

如何通過編程將請求重定向到子域,保持網址的其餘部分保持不變?

+1

投票移動到其他論壇。您可以在IIS中設置非www版本並將其配置爲重定向(這是我認爲在「主目錄」(或類似的選項卡)選項卡中的選項)。 – 2010-06-05 02:03:34

+1

它也可以在Code中完成。不一定是IIS解決方案。 – 2010-06-05 02:23:33

回答

3

你可以嘗試一些升ike this
一個簡單的方法,你可以連接到在Global.asax

這裏是我的類

Imports System.Web.UI.HtmlControls   
Imports System.Web.UI   
Imports System.Web 

Public Class HelperPage 
    Inherits System.Web.UI.Page 

    ''# Force WWW  
    Public Shared Sub ForceWWW() 
     If Not GetServerDomain.StartsWith("www.") Then 
      HttpContext.Current.Response.Status = "301 Moved Permanently" 
      HttpContext.Current.Response.AddHeader("Location", "http://www." & GetServerDomain() & HttpContext.Current.Request.RawUrl) 
     End If 
    End Sub 

    Public Shared Function GetServerDomain() As String 
     Dim myURL As String = HttpContext.Current.Request.Url.ToString 
     Dim re As New Regex("^(?:(?:https?\:)?(?:\/\/)?)?([^\/]+)") 
     Dim m As Match = re.Match(myURL) 
     Return m.Groups(1).Value 
    End Function  
End Class 

,這裏是我在Global.asax

通話
Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs) 
      HelperPage.ForceWWW() 
End Sub 

有了這一點的代碼..你將永遠被迫到您的網站的WWW版本(提供IIS中的主機頭同時包含www和非www版本。)

0

根據您的IIS運行的網站數量,您可以通過手動配置來完成此任務。網站 - 只需將所有組合添加到應用程序

或者您可以開發一個小型「通配符」重定向器。 「服務器管理問題」的「編程答案」是這樣的:

只需在IIS句柄上設置每個「未知」請求地址的默認網站即可。 可以在「有效的域列表」中查找包含的URL,並適當重定向。

我們有這樣的機制在我們的服務器上運行。

簡單版本(簡短黑客)將檢查請求的URL中是否存在WWW,如果不是,則嘗試將其添加到請求中並將客戶端重定向到該地址。

請注意:這會讓客戶端執行一個服務器邊界,從而產生額外的流量。所以,如果你有像2000年點擊公關。 minut和其中一半沒有WWW,黑客可能不是最好的主意。

有用的答案?