web-dev-qa-db-fra.com

Rediriger un sous-domaine vers un dossier sans changer l'URL

J'essaie de masquer des sous-domaines dans des dossiers à l'aide de .htaccess

PDATE par souci de clarté: Je voudrais que l'utilisateur entre l'URL: subdomain.example.com et reste dans la même URL tout en récupérant le contenu de example.com/subdomain

J'utilise un hébergeur Plesk 12. J'ai essayé beaucoup de publications et la seule chose que je pouvais réaliser était d'obtenir la redirection de xxxx.example.com vers example.com/xxxx (non masqué).

Le fait est que les dossiers sont générés par un autre programme (avec leur propre structure et leur propre contenu), donc je ne sais pas vraiment comment mettre mod_proxy dans cette configuration pour que la magie opère.

MISE À JOUR 11-06-2015 J'ai déplacé les dossiers de sous-domaines vers/sd/afin de les organiser et de les distinguer de tout autre fichier.

MISE À JOUR 11-07-2015 J'ai été capable de faire en sorte que le programme ne crée qu'un "prettyurl" pour chaque élément, donc maintenant je n'ai même pas de dossiers, juste/sd/template/subdomain1 /,/sd/template/subdomain2 et ainsi de suite.

Mon .htaccess actuel:

Options +FollowSymlinks -MultiViews
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

#RewriteRules for pretty url
RewriteRule ^sd/template/index.php$ "sd/template/" [R=301,L,QSA]

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule . - [L]

#sd/template/index.php
RewriteRule ^sd/template/.*?([^\.\/]*)\.html$ sd/template/?pname=$1 [L,QSA]
RewriteRule ^sd/template/([1-2]\d{3})/(?:(0[1-9]|1[0-2])/(?:(0[1-9]|1[0-9]|2[0-9]|3[0-1])/)?)?$ sd/template/?d=$1$2$3 [L,QSA]
RewriteRule ^sd/template/[^\.]*?([^/\.]*)/$ sd/template/?fname=$1 [L,QSA]
RewriteRule ^sd/template/[^\.]*?([^/\.]*)$ "$0/" [R=301,L,QSA]

RewriteCond %{HTTP_Host} ^(.*)\.example\.com
RewriteRule ^(.*)$ /sd/template/%1 [L,NC]
</IfModule>

J'ai également créé un sous-domaine générique, mais je ne sais pas vraiment si cela aide ou aggrave la situation.

À l'heure actuelle, si j'entre "test1.exemple.com" dans la barre d'adresse, je suis redirigé vers "exemple.com/test1/" correctement, mais ce dont j'ai besoin, c'est d'afficher le contenu sans changer l'URL affichée.

MISE À JOUR 11-07-2015 Maintenant, si j'utilise test.example.com, je suis redirigé vers test.example.com/sd/template/test/. Que dois-je faire pour obtenir simplement le fichier test.example.com?

Toute aide est grandement appréciée, car je suis coincée ici après 3 jours de lecture d’un article et d’un autre de tous les sites Web.

1
LordNeo

L'indicateur R dans votre RewriteRule sert à forcer une redirection externe. Vous ne voulez pas l'utiliser si vous masquez l'origine du contenu.

Essaye ça:

RewriteRule ^/(.*)$ /path/to/your/subdomain/directories/%1/$1 [L,NC]

Vous voudrez peut-être être plus précis dans vos correspondances de sous-domaines pour renforcer la sécurité.

1
Dave Lozier