2009-05-08 7 views
1

Si, comme ici au travail, nous avons test, les environnements de mise en scène et de production, tels que:L'utilisation d'un regex pour déterminer domaine en utilisant JavaScript

http://test.my-happy-work.com

http://staging.my-happy-work.com

http://www.my-happy-work.com

I J'écris du javascript qui redirigera le navigateur vers une URL telle que:

http://[environment].my-happy-work.com/my-happy-video

Je dois être en mesure de déterminer l'environnement actuel que nous sommes dans

Il y a la possibilité que je en être à une URL telle que:.

http://[environment].my-happy-work.com/my-happy-path/my-happy-resource

Je veux pour être en mesure de saisir la window.location mais dépouiller de tout, mais:

http://[environment].my-happy-work.com

Et puis ajouter à cette chaîne + "/" + "my-happy-video".

Je ne suis pas habile avec regex, mais je suppose qu'il y aurait un moyen d'analyser la window.location jusqu'au « .com »

pensées? Merci!

Répondre

8

Pourquoi n'utilisez-vous pas seulement window.location.hostname? Cela ne contient que le domaine.

Vous pouvez combiner cela avec window.location.protocol pour produire ce dont vous avez besoin:

var domain = window.location.protocol + "//" + window.location.hostname; 

More on window.location.

+1

Oui, utilisez une expression régulière sur le window.location.hostname pour déterminer votre sous-domaine (ou de l'environnement comme vous l'appelez), la regex serait quelque chose comme window.location.hostname.match (/^(. *) \. mon-heureux-travail \ .com $ /) qui retournera un tableau avec le champ capturé (ce est entouré de parenthèses). – Kekoa

2

Il est possible qu'une autre option consiste à déployer du code distinct dans chaque environnement. Pas de code totalement séparé, mais peut-être définir une variable à "PRODUCTION" en production, ou à "STAGING" en mode de mise en scène.

Cela déconnecte le mode d'exécution de votre application à partir du nom de domaine.

+0

C'est raisonnable. Même si vous n'avez même pas besoin de changer le code, il vous suffit de créer un fichier ini/config sur chaque machine qui stocke le mode (avec un retour sécurisé si aucun fichier n'est trouvé). –

+0

(En supposant que vous ayez un script côté serveur pour lire un tel fichier et, si nécessaire, générer la variable JS appropriée.) –

3

Cette expression devrait faire l'affaire:

^https?://([a-z0-9]+)\.([a-z0-9\-]+)\.[a-z]+ 
Questions connexes