J’ai une application PHP qui nécessite que la racine du document du domaine soit définie sur /(wherever)/app_dir/www
pour pouvoir s’exécuter correctement (ce qui ne peut malheureusement pas être modifié). Malheureusement, sur mon hôte, je ne peux pas modifier la racine du document principal mydomain.com
(de /public_html
vers /public_html/app_dir/www
mais je peux modifier la racine du document pour les sous-domaines.
Les sous-domaines sont stockés dans /public_html/subdomain.domain.com
et la définition de la racine du sous-domaine sur /public_html/subdomain.domain.com/app_dir/www
permet à l’application d’afficher son contenu http://subdomain.domain.com/
sur http://subdomain.domain.com/
.
Pour que son contenu apparaisse au niveau du domaine racine (où je ne peux pas l’installer car la racine du document n’est pas modifiable), j’essaie d’utiliser .htaccess pour diffuser du contenu du sous-domaine sans redirect le navigateur. Allez donc sur www.domain.com
affichera www.domain.com
dans la barre d’ www.domain.com
, mais diffusera en réalité le contenu de subdomain.domain.com
(et de même avec www.domain.com/something
tirant la place de subdomain.domain.com/something
).
Si je comprends bien, mod_proxy devrait pouvoir le faire (et est installé). Sur la base d’autres réponses SO à des requêtes similaires, cela semble être la solution:
RewriteEngine On RewriteRule ^(www.)?domain\.com$ http://subdomain.domain.com/$1 [L,P]
Je l’ai essayé avec un simple index.html à la place de quelque chose de plus complexe, mais soit ma syntaxe est désactivée (j’ai essayé plusieurs variantes, sans joie, y compris sans l’option P; je ne suis pas expert et mon mon expérience précédente est limitée à de simples réécritures et à des redirections 301), j’ai raté quelque chose de trop évident, ou j’abandonne complètement le mauvais arbre, car je reçois juste le fichier d’index factice que j’ai au niveau du domaine racine du fichier d’index également factice assis dans la racine du sous-domaine (qui affiche très bien si vous allez à subdomain.domain.com
, mais ce n’est pas le but).
Toute aide serait très appréciée!
Cette règle est fausse et erronée, elle ne fait pas ce que vous pensez devoir faire:
RewriteRule ^(www.)?domain\.com$ http://subdomain.domain.com/$1 [L,P]
Rappelez-vous que RewriteRule
correspond uniquement à la demande REQUEST_URI
sans les parties de chaîne de domaine et de requête.
Si mod_proxy est activé, vous pouvez avoir cette règle à la place:
Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC] RewriteRule ^ http://subdomain.domain.com%{REQUEST_URI} [P,L]
Si pour une raison quelconque, mod_proxy n’est pas activé, faites-le moi savoir, je vous proposerai une solution alternative.