2010-01-14 15 views
0

J'ai une application hébergée sur un serveur de transfert. Si j'utilise ma demande en fournissant mes informations d'identification, je peux ouvrir URL =>http://mysite.com.Problème avec http: // et http: // www

Cependant, si je change l'URL en http://www.mysite.com, le site affiche à nouveau la page de connexion pour demander les informations d'identification (que je viens de fournir).

Maintenant sur le serveur de transfert, si je tape http://mysite.com dans la barre d'adresse, je suis envoyé à http://mysite.com. Mais quand je tape google.com dans la barre d'adresse, je suis pris à http://www.google.com. Comment cela se passe-t-il?

Ma question est: quand ma demande va vivre et je tape mysite.com, sera l'URL se converti en http://www.mysite.com ou dois-je faire quelque chose pour convertir l'URL pour un contenant www?

Répondre

1

Vous avez plusieurs questions différentes vous semblent demander:

Tout d'abord - pourquoi vous obtenez http://www.google.com lors de la frappe http://google.com:

En effet, Google est en train de faire une redirection sur le côté serveur, tout le monde va http://google.com finit à http://www.google.com/

Vous pouvez faire la même chose, en redirigeant chaque appel à http://www.mysite.com à http://mysite.com. Cela peut être réalisé en utilisant la méthode Response.Redirect, en utilisant un module de réécriture d'URL ou l'une de plusieurs façons.

+1

Je n'émettrais pas de Response.Redirect car cela ne génère qu'une redirection temporaire (302), et certains moteurs de recherche n'aiment pas beaucoup de ceux-ci, il est préférable d'utiliser une méthode qui produit une redirection permanente 301 comme dans le dernier exemple Skilldrick (http://stackoverflow.com/questions/2063293/issue-with-http-and-http-www/2063302#2063302) fournitures. –

+0

Si je prends n'importe quel site comme exemple, 75% d'entre eux ajoutent www comme préfixe. Je veux savoir si c'est quelque chose que tout le monde manipule dans le code derrière ou peut être réalisé par quelques astuces dans IIS? – user250607

+0

Beaucoup d'entre eux ont seulement le domaine avec le préfixe www enregistré, donc essayer d'aller à la non www échouera. D'autres ne font aucune sorte de redirection et les deux vont travailler. – Oded

0

La redirection d'une URL vers une autre peut être gérée de plusieurs façons. Un couple sont:

  1. balise meta refresh, hébergé à http://mysite.com qui contient quelque chose comme:

    <meta http-equiv="refresh" content="1;url=http://www.mysite.com"> 
    
  2. URL rewriting, par exemple avec Apache (http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html et http://www.widexl.com/tutorials/mod_rewrite.html pourraient être des endroits à regarder):

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^www.mysite.com$ [NC] 
    RewriteRule ^(.*)$ http://www.mysite.com/$1 [R,L] 
    

    Ceci serait utilisé pour rediriger de manière externe (HTTP 302) tout hôte ne correspondant pas à www.mysite.com au http://www.mysite.com. La même chose est probablement également possible avec IIS.

3

Si vous ne parvenez pas à effectuer l'une des méthodes de réécriture d'URL recommandées par Skilldrick alors vous devrez configurer votre module d'authentification à utiliser le cookie de domaine partagé correct.

Si vous utilisez l'authentification Forms cela peut être réalisé dans le web.config:

<forms name="name" 
     loginUrl="URL" 
     defaultUrl="URL" 
     domain=".example.com"> 
</forms> 

Notez la période de premier plan dans le domaine - ce écrit un cookie d'authentification qui peut être lu à la fois example.com et www.example.com, ce qui signifie que vous allez maintenant être connecté sur les deux variantes du site. Cela étant dit, le dernier exemple donné par Skilldrick fonctionne bien, et devrait être assez trivial pour vous permettre de l'implémenter sur votre site.

+0

ok .. laissez-moi essayer ça. Avant cela, permettez-moi de poser un doute ... quel serait le nom = "nom", qu'est-ce que cela indique? L'URL loginurl et l'URL par défaut sont-ils les mêmes? – user250607

Questions connexes