Sous-domaine dynamique

Nouveau WRInaute
Bonjour tout le monde !!

J'aurais besoin d'un petit coup de pouce pour un site que je développe. C'est un site de membres, avec des fiches (profils) de membre. J'aimerais que les inscrits puissent atterrir directement sur leur profil en rentrant à la place du sous domaine "www" leur pseudo de connectés. Exemple :

http://pseudo.monsite.fr

Vers :
http://www.monsite.fr/membres/fiches/fiche.php?pseudo=$pseudo

Ou avec un script qui retranscrit le pseudo en id :
http://www.monsite.fr/membres/fiches/fiche.php?pseudo=$id

Ou :
http://pseudo.monsite.fr/membres/fiches/fiche.php pseudo=$pseudo

Merci beaucoup de votre aide à tous... Je pense que vous allez m'orienter vers un .htaccess, mais que faut il incorporer dedans, et où le placer sur le serveur ?

Mon site est sur un système apache.

Merci de votre réponse rapide, c'est très urgent !
 
WRInaute occasionnel
Il ne me semble pas que cela soit possible. en effet un sous domaine a un htaccess propre. Donc il faudrait que tu crées un sous domaine a chaque fois... En effet toto.monsyte.fr et www.monsite.fr sont 2 choses differentes.
 
WRInaute discret
C'est possible, c'est la technique qu'utilise deviantart, mais je n'ai aucune idée de comment l'appliquer concrètement.
 
Nouveau WRInaute
Le problème c'est que c'est un site faisant appel à une base de données de 35 000 membres, et je ne peux pas créer un sous domaine manuellement à chaque fois qu'une personne s'inscrit. Je suis certain qu'il y a une procédure automatique qui interprète le sous domaine "fictif" via un htaccess... Attendons de voir les futurs réponses sur le post, en espèrant que quelqu'un sache comment faire.
 
WRInaute impliqué
Ca ne me parrait pas trop dur.

a) Tu fais pointer les sous domaines vers le même répertoire physique
b) dans ce répertoire, tu met un .htaccess dans le genre
Code:
RewriteEngine on
RewriteCond   %{HTTP_HOST}                 ^[^.]+\.domaine\.com$
RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
RewriteRule   ^([^.]+)\.domaine\.com /membres/fiches/fiche.php?pseudo=$1

Je n'ai pas testé, mais ça ne doit pas être loin de la solution
 
WRInaute discret
Et tu mets le wildcard en sous domaine dans named et apache pour éviter d'avoir à redémarrer les deux services à chaque ajout de membre.
 
WRInaute occasionnel
mewp a dit:
Et tu mets le wildcard en sous domaine dans named et apache pour éviter d'avoir à redémarrer les deux services à chaque ajout de membre.
Si tu fais ca, tu ne peux plus créer le sous domaine a la volée alors...
 
WRInaute occasionnel
Cyril a dit:
Si tu fais ca, tu ne peux plus créer le sous domaine a la volée alors...

Tu ne le crée pas à la volée, tu les actives tous par défaut, et après tu gère dans fiche.php?pseudo=$1 si le $1 est un pseudo que tu as dans la base ou pas.

En tout cas c'est plus ou moins comme ça que je fais pour sur-internet.fr
 
Nouveau WRInaute
Bonjour à tous...

Alors merci pour vos réponses. J'ai testé, le www. sans rien fonctionne toujours mais quand je mets un pseudo dans l'url il redirige sur une 404 alors que mon champ est bon.
Voici mon code : (je précise que c'est un virtual host)

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.[^.]+\.monsite\.com$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^www\.([^.]+)\.monsite\.com /fra/web/mem/crd/crd-01.php?login=$1
 
WRInaute passionné
Tu peux gérer ca avec un fichier 404 en php. Tu analyses l'url qui provoque la 404. Si ca correspond à ton model d'url, tu affiches la page en renvoyant un code OK 200 dans les headers.

François
 
Nouveau WRInaute
Désolé mais je ne comprends pas ce que c'est qu'un "wildcard", je suis pas très connaisseur sur Apache.
 
WRInaute discret
wildcard = * ( pour dire tous les choix possibles ).
Il faut donc que tu créé la zone avec un * dans ton DNS :

- pour l'instant si je cherche toto.friendsbox.com, il ne le trouve pas : si tu mets * dans ta définition du DNS en sous-domaine, on pourras trouver tout les choix de sous-domaine pointant vers ton server

Il faut faire la même chose avec Apache et créer le virtualhosting avec *.friendsbox.com, ainsi toute les requêtes avec n'importe quel sous-domaine seront redirigé vers le même répertoire.

Donc il te faut changer ses 2 points avant de pouvoir bidouiller avec ton .htaccess
 
Nouveau WRInaute
Tu veux dire rajouter un élément dans le domain alias qui se trouve sur les attributs du virtual host dans le fichier de configuration d'Apache ?
 
WRInaute discret
Explication le plus en détail possible de ce qu'il se passe :

1) Je veux aller sur h**p://toto.friendsbox.com

Mon browser ( IE, Firefox,... ) va d'abord interroger le serveur de nom de ton domaine ( nameservers.net dans ton cas ) pour savoir quelle est l'IP du serveur ou se connecter.

2) Mon browser se connecte alors sur cette IP et demande la page en question.

3) Le serveur ( Apache ) en face reçoit l'URL demandée, regarde si cela appartient a un de ses VirtualHosting, se place dans le bon répertoire et envoi la page correspondante ( ou l'erreur correspondante ).



Pour l'instant tu es bloqué au point 1. Il te faut activer la résolution pour tout les sous-domaines possibles ( je ne pense pas que tu veux activer manuellement les sous-domaines de tes membres... ).

Dans le cas de toto.friendsbox.com ce n'est pas ton serveur qui renvoi l'erreur 404, tu ne peux donc pas utiliser cela pour construire une nouvelle page : la requête n'a jamais été passé à ton serveur : on ne sait pas quelle est l'adresse de toto.friendsbox.com, la requête ne pars pas vers ton site.

Donc ce que tu dois faire :

(a) Changer la définition de ton domaine sur nameservers.net pour qu'il fasse la résolution sur le wildcard.
(b) Dans la configuration Apache, changer le VirtualHosting de friendsbox, pour qu'il n'y ai qu'un seul paragraphe et que le nom soit *.friendsbox.com, pour que toute les requêtes possibles arrivent sur le même répertoire.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut