2009-12-26 8 views
2

Je veux configurer un système afin que plusieurs domaines personnalisés comme [mydomain.com/params] redirigent vers [myapp.com/mydomain.com/params]. Puis-je le faire en utilisant uniquement les paramètres DNS?Masquage d'URL avec DNS et/ou Mod_Rewrite?

Je suppose que ce n'est pas possible, donc ce serait une meilleure solution pour diriger mydomain1.com, mydomain2.com, mydomain3.com, etc. à une adresse IP puis utiliser Mod_Rewrite pour diriger chaque requête (invisible) à myapp.com/mydomain#.com/params? Chaque URL redirigée conduit au contenu qui est chargé à partir d'un CMS hébergé centralement.

Toutes les suggestions, ressources et/ou solutions seraient grandement appréciées!

Répondre

4

est ici la solution:

  1. Set enregistrements d'adresses DNS pour tous les domaines de vanité à la même adresse IP (si d1.com, d2.com, d3.com, etc. ont tous les enregistrements DNS A mis à un IP ou FQDN par exemple)
  2. Configuration du serveur avec un VirtualHost en utilisant l'adresse IP en tant que domaine
  3. dans le répertoire racine de cette VirtualHost, créez un fichier .htaccess qui met en place le mod_rewrite
  4. Utilisez les indications suivantes pour le mod_rewrite le .htaccess:
 
Options +FollowSymLinks 

RewriteEngine On 

RewriteCond %{HTTP_HOST} (.*) [NC] 
RewriteRule (.*) http://myapp.com/%1/$1 [P,R=301,L] 

% 1 = le domaine demandé, si www.d1.com ou d1.com
$ 1 = le reste de l'URL qui vient après l'URL de la vanité (d1.com/ everyting/else

Cette configuration redirige de manière invisible toutes les demandes.

Exemples:

 
d1.com => returns content from => myapp.com/d1.com/ 

www.d1.com => returns content from => myapp.com/www.d1.com/ 

d1.com/blog/post/1 => returns content from => myapp.com/d1.com/post/1 
2

Non, vous ne pouvez pas utiliser uniquement DNS pour cela. Si chaque domaine peut fonctionner de façon autonome (www.domain.com), il s'agira d'une installation multi-site simple et ne nécessitant pas de mod_rewrite, juste un ensemble de directives <virtualHost> qui pointent vers chaque site.

Si vous avez besoin exactement de l'installation que vous décrivez (http://www.hostname.com/www.2ndhostname.com/directoryname), vous aurez besoin d'un <VirtualHost> avec tous les domaines comme alias, et d'une redirection mod_rewrite pour diriger les demandes entrantes vers le bon répertoire.

+0

Merci pour la réponse rapide. Le problème est que cela doit être automatiquement évolutif - ce qui signifie que mon code PHP doit être capable de créer/détruire des enregistrements de domaine à la volée (désolé, je n'ai pas précisé cela). Ce que je pourrais faire est d'avoir deux domaines: myapp.com + myapp2.com Ensuite, chaque domaine DNS # .com peut-il être configuré pour rediriger de manière invisible vers le domaine # .com.myapp2.com? Le serveur avec myapp2.com serait configuré pour les sous-domaines génériques et utiliserait alors Mod_Rewrite pour accéder à myapp.com/domain.com/ Le son est-il plausible? Je suis nouveau à l'installation de DNS et essayant d'apprendre ... –

+0

Je ne suis pas tout à fait sûr de ce que vous visez à faire, mais cela semble trop compliqué à mes oreilles. Combien de serveurs avez-vous exactement, et combien en avez-vous besoin *? Ne suffira-t-il pas de faire correspondre tous les domaines à un seul serveur, et laisser mod_rewrite trier le reste? –

+0

Je suis d'accord, cela semble trop compliqué. J'utilise Rackspace CloudSites pour héberger l'application centrale (c'est bon marché et permet la mise à l'échelle à la demande), ce qui ne permet malheureusement pas de configuration avancée. J'utilise Rackspace CloudServers (déploiement quasi-instantané, très peu coûteux, évolutif, accès root) pour gérer la personnalisation plus avancée. J'ai déjà configuré une configuration similaire (sous-domaines génériques sur un CloudServer redirigé vers un site sur CloudSites) mais les problèmes DNS ajoutent maintenant une couche de complexité supplémentaire. –