代码之家  ›  专栏  ›  技术社区  ›  SiberianGuy

ASP.NET将请求重定向到子域(博客或www)

  •  1
  • SiberianGuy  · 技术社区  · 14 年前

    将Web请求重定向到ASP.NET应用程序到子域的最简单方法是什么?

    如果请求进入URL http://somesite.com/foo.aspx ,新的目标URL应为

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

    如何以编程方式将请求重定向到子域,保持URL的其余部分不变?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Chase Florell    14 年前

    你可以试试我的东西 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版本)。

        2
  •  0
  •   BerggreenDK    14 年前

    根据您的IIS运行的网站数量,您可以通过手动配置pr.website来完成此操作-只需将所有组合添加到应用程序中即可。

    或者您可以开发一个小的“通配符”重定向器。下面是“服务器管理问题”的“编程答案”:

    只需让IIS上的默认网站处理每个“未知”请求地址。 输入的URL可以在“有效的域列表”中查找并适当地重定向。

    我们的服务器上运行着这样的机制。

    简单的版本(简称hack)是检查请求的URL中是否有WWW,如果没有,则尝试将其添加到请求中,并将客户端重定向到该地址。

    注意:这会使客户机执行服务器往返,从而产生额外的流量。所以,如果你有2000个点击率,其中一半没有www,黑客可能不是最好的主意。

    有用的答案?