web-dev-qa-db-fra.com

Comment utiliser DNS pour définir un sous-dossier d'un domaine à rediriger vers un autre domaine

J'ai une situation où j'ai besoin d'un sous-dossier, dans un domaine, pour rediriger vers un deuxième domaine, donc http://domain1.com/domain2/ serait redirigé vers http: // domain2.com .

J'ai besoin du dossier racine de domain1.com pour rester tel quel, il suffit que le sous-dossier doive être redirigé.

Il doit en être ainsi, car je dois accéder à PHP et aux fichiers de polices du domaine 2, sans violer la sécurité entre domaines. Y a-t-il un moyen de faire cela en utilisant DNS?

J'ai seulement trouvé des instructions sur cette opération avec un sous-domaine, ce qui, à mon avis, ne fonctionnera pas pour un accès interdomaine PHP.

2
James Morrison

Cela ne peut certainement pas être fait avec DNS.

Je pense que la vraie question que vous voulez résoudre est "Comment puis-je autoriser PHP et les polices?"


Pour activer PHP et les fichiers de polices (c'est probablement tout ce dont vous avez besoin), ajoutez l'en-tête 'Access-Control-Allow-Origin' à configuration de domain2, comme suit.

Apache:

Header add Access-Control-Allow-Origin "http://domain1.com"

Nginx:

add_header Access-Control-Allow-Origin "http://domain1.com";

Si vous le faites de cette façon, vous n'avez pas du tout besoin de http:/domain1/domain2, éliminez-le car il est source de confusion.


Si vous voulez réellement rediriger de manière permanente le domaine1/le sous-dossier> le domaine2, il s'agit d'un simple changement dans configuration de domaine1 comme ceci.

Apache:

Redirect 301 /subfolder http://domain2.com

Nginx:

location /subfolder {
            return 301 http://domain2.com;
            }

Notez que pour les deux ensembles de réponses, les directives Nginx doivent se trouver dans les blocs {...} de votre serveur, et les règles Apache peuvent figurer dans votre configuration virtualhost ou .htaccess (faites-vous une faveur et ignorez .htaccess si vous le pouvez. , mettez tout dans votre config/virtualhost pour des raisons de performances). Les règles Apache reposent sur mod_rewrite et mod_headers, qui doivent être activés.

4
Tom Brossman

Cela ne peut pas être fait via DNS. Vous devez le faire au niveau du serveur Web (.htacess Apache/réécrire les règles IIS), ou via un script exécutant ASP.net, PHP, Perl, etc. Vous devez essentiellement changer l'en-tête de la réponse en déplacé, et le DNS ne peut pas fais ça.

1
Frank

Vous pouvez le faire uniquement à partir du DNS avec un sous-domaine, pas avec des sous-dossiers. Pour les sous-dossiers, vous devez utiliser un proxy-pass. Voici comment procéder dans Apache (version 2.4 et ultérieure):

ProxyRequests Off
ProxyPass /subfolder/ http://otherdomain.com/
ProxyPassReverse /subfolder/ http://otherdomain.com/
<Location /subfolder/>
    ProxyHTMLEnable On
    ProxyHTMLURLMap / /subfolder/
</Location>

Vous pouvez également utiliser http://otherdomain.com:8080 si votre deuxième hôte fournit le contenu sur le port 8080. Vous devez également activer mod_proxy et mod_proxy_html sur votre serveur Apache pour que cela fonctionne. Le module mod_proxy_html permet de réécrire les liens vers vos ressources statiques (images, css, javascript, etc.) afin que, si vous avez des liens relatifs dans la réponse de otherdomain.com, par exemple , ils seraient chargés correctement.

Pour les versions plus anciennes dépourvues de mod_proxy_html, vous pouvez utiliser mod_substitute et certaines expressions régulières comme magiques pour obtenir le même résultat.

0
Thyamarkos