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.
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.
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.
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.