將Web請求重定向到ASP.NET應用程序到子域的最簡單方法是什麼?ASP.NET重定向請求到子域(博客或www)
如果請求進入URL http://somesite.com/foo.aspx
,新的目標網址應該是
http://www.somesite.com/foo.aspx
或http://blog.somesite.com/foo.aspx
如何通過編程將請求重定向到子域,保持網址的其餘部分保持不變?
將Web請求重定向到ASP.NET應用程序到子域的最簡單方法是什麼?ASP.NET重定向請求到子域(博客或www)
如果請求進入URL http://somesite.com/foo.aspx
,新的目標網址應該是
http://www.somesite.com/foo.aspx
或http://blog.somesite.com/foo.aspx
如何通過編程將請求重定向到子域,保持網址的其餘部分保持不變?
你可以嘗試一些升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版本。)
根據您的IIS運行的網站數量,您可以通過手動配置來完成此任務。網站 - 只需將所有組合添加到應用程序
或者您可以開發一個小型「通配符」重定向器。 「服務器管理問題」的「編程答案」是這樣的:
只需在IIS句柄上設置每個「未知」請求地址的默認網站即可。 可以在「有效的域列表」中查找包含的URL,並適當重定向。
我們有這樣的機制在我們的服務器上運行。
簡單版本(簡短黑客)將檢查請求的URL中是否存在WWW,如果不是,則嘗試將其添加到請求中並將客戶端重定向到該地址。
請注意:這會讓客戶端執行一個服務器邊界,從而產生額外的流量。所以,如果你有像2000年點擊公關。 minut和其中一半沒有WWW,黑客可能不是最好的主意。
有用的答案?
投票移動到其他論壇。您可以在IIS中設置非www版本並將其配置爲重定向(這是我認爲在「主目錄」(或類似的選項卡)選項卡中的選項)。 – 2010-06-05 02:03:34
它也可以在Code中完成。不一定是IIS解決方案。 – 2010-06-05 02:23:33