2010-06-05 4 views
1

Quelle est la manière la plus simple de rediriger une requête Web vers une application ASP.NET vers un sous-domaine?Demande de redirection ASP.NET vers un sous-domaine (blog ou www)

Si une demande est dans l'URL http://somesite.com/foo.aspx, la nouvelle URL de destination doit être

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

Comment pouvez-vous rediriger programme la demande au sous-domaine, en gardant la reste de l'URL intact?

+1

A voté pour passer à l'autre forum. Vous pouvez simplement configurer la version non-www dans IIS et la configurer pour la rediriger (c'est une option que je pense dans l'onglet "Home Directory" (ou quelque chose de similaire)). –

+1

Cela peut également être fait dans le code. Ne doit pas être une solution IIS. –

Répondre

3

Vous pouvez essayer quelque chose que je ike this
Une méthode simple que vous pouvez brancher à la Global.asax

Voici mon classe

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 

et voici mon appel dans le Global.asax

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

Avec ce peu de code .. vous serez toujours forcé à la version WWW de votre site Web (fournissant que l'en-tête de l'hôte dans IIS comporte à la fois la version www et la version non www.)

0

Selon le nombre de sites Web que votre IIS exécute, vous pouvez le faire manuellement par configuration. site Web - il suffit d'ajouter toutes les combinaisons à l'application

OU vous pouvez développer un petit redirecteur "générique". Voici la "réponse de programmation" à une "question d'administrateur de serveur":

Il suffit de faire en sorte que le site Web par défaut sur le serveur IIS traite chaque adresse "inconnue" demandée. L'URL incomming pourrait être recherchée dans une "liste valide de domaines" et rediriger de manière appropriée.

Nous avons un tel mécanisme sur nos serveurs.

La version facile (court hack) serait d'examiner s'il y a WWW dans l'URL demandée et si non, alors essayez de l'ajouter à la demande et de rediriger le client à cette adresse.

Attention: cela oblige le client à effectuer une liaison de service qui génère un trafic supplémentaire. Donc, si vous avez 2000 hits pr. minut et la moitié d'entre eux est sans WWW, le hack n'est probarbly pas la meilleure idée.

Réponse utile?

Questions connexes