2010-09-26 3 views
1

Lorsqu'un utilisateur va au domaine de base http://www.domain.com/ ou http://domain.com/,
la page doit être redirigé vers http: // www. domain.com/#!/news.htmlcomment gérer correctement la redirection javascript?

Je veux dire quelque chose comme ceci:

if (window.location.href("http://www.domain.com/") || window.location.href("http://domain.com/")) { 
    window.location.replace("http://domain.com/#!/news.html"); 
} 

cela ne fonctionnera pas. Surtout, la page est fournie sur deux domaines différents.
des idées comment le résoudre en jolies Javascript ou jQuery (en utilisant jQuery 1.4.2)?

Répondre

3

Utilisez les propriétés URL analysées sur location, comme pathname, hostname, search et hash plutôt que d'essayer de mess avec le href:

if (location.pathname==='/' && location.hash==='') 
    location.hash= '#!/news.html'; 

Surtout, la page est fournie sur deux domaines différents.

Il est préférable que SEO place votre site sur un seul nom d'hôte particulier et redirige tous les autres noms d'hôtes associés vers ce nom d'hôte canonique. Laissez la config HTTPD s'inquiéter des domaines au lieu de votre application. Par exemple, si vous avez choisi www.domain.com être votre nom d'hôte canonique, dans la configuration Apache, vous pouvez dire:

<VirtualHost *:80> 
    ServerName www.domain.com 
    DocumentRoot ... 
    ... other settings for the main site ... 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName domain.com 
    ServerAlias someotherdomain.org 
    ServerAlias www.someotherdomain.org 
    Redirect permanent/http://www.domain.com/ 
</VirtualHost> 

D'autres serveurs Web ont un différentes façons de mettre en place réoriente. Si vous n'avez pas accès à la configuration d'Apache et que vous êtes limité à .htaccess (ugh), alors vous devrez utiliser mod_rewrite pour effectuer une redirection conditionnelle basée sur le nom d'hôte.

+0

merci, votre solution fonctionne! Je prends note de la solution serveur, dans l'attente de changer cela. – Thomas

4
var loc = window.location.href; 

if(loc == 'http://domain.com' || loc == 'http://www.domain.com') { 
    window.location.href = 'http://domain.com/#!/news.html'; 
} 

Modifier:

var d = window.location.hostname; 
var loc = window.location.href; 
if(loc == d) { 
    window.location.href = d +'/#!/news.html'; 
} 

document.domain a vraiment sauvé ma vie pour répondre à votre question, j'ai essayé de répondre à votre question en utilisant l'expression régulière, mes modèles ne correspondaient pas aux possibilités offertes. semble que je vraiment besoin de revenir à apprendre regex :)

Modifier:

var d = window.location.hostname; 
+0

cela fonctionne, merci. ce site a deux noms de domaine, domain.com et domain1.com. Maintenant, je ferais deux fois cet extrait, pour les deux domaines. Ou y a-t-il une meilleure façon de faire cela? – Thomas

+0

@thomasz J'ai mis à jour ma réponse, essayez-le =) –

+0

@Avinash merci pour votre effort :) Il semble être une solution assez agréable, mais malheureusement «document.domain» ne fonctionnera pas. L'adresse ne changera pas et le serveur répondra avec un statut de 404. L'extrait est déclenché avant que js ne soit chargé, est-ce qu'il y a plus de choses à utiliser avec 'document.domain'? – Thomas

Questions connexes