Pointer un nom de domaine vers un dossier (serveur dédié)

Nouveau WRInaute
Bonjour tout le monde,
voici ma question

J'aimerais faire pointer des noms de domaines vers des dossiers (qui sont virtuels ,qui n'existent pas en dur , je ne pense pas que cela soit déterminant)

www.siteprincipal.com possede des utilisateurs : user1, user2.

Les utilisateurs créent leurs site accessible à cette adresse.
www.siteprincipal.com/user1/
www.siteprincipal.com/user2/

Ensuite j'ai les noms de domaines de user1, et user2, ils pointent sur mon dédié gentoo.
je veux faire pointer www.user1.com sur www.siteprincipal.com/user1/ et que cela continue sans probleme.

Exemple:
www.user1.com sur www.siteprincipal.com/user1/
www.user1.com/page.html sur www.siteprincipal.com/user1/page.html

Comment dois je m'y prendre ?

Merci de votre aide.
 
WRInaute impliqué
Ben faut paramétrer ton serveur HTTP à la volée. Rajouter un VirtualHost pour chaque utilisateur...

Ou alors, faire un VirtualHost qui accepte tous les domaines, et en PHP vérifier quel domaine a été demandé puis balancer le script attendu.
 
Nouveau WRInaute
merci flobaoti de ta réponse.

Peut on en faire un ensemble, me dire la marche à suivre sans qu'on automatise. Disons alors que le site à un seul user.

www.siteprincipal.com/user1/

je veux faire pointer www.lesiteuser1.com sur www.siteprincipal.com/user1/


Pour continuer sur ma problématique voici comment est généré le dossier /user1/.
Morceau de mon htaccess

RewriteRule ^([a-z]*)\/index.html$ /index.php?user=$1 [QSA,L]


Merci de ton aide, et de ceux qui m'aideront à avancer.
En procédant comme cela, je pourrai mieux comprendre, puis voir ensuite par mes soins comment automatiser la chose.
 
Nouveau WRInaute
quel fichier voudrais tu regarder ?

Pour enregistrer des domaines sur mon dédié, je passe toujours par l'application webmin (ovh) présente, je me soucie donc jamais des fichiers apache à configurer...

Merci encore de ton aide
 
Nouveau WRInaute
bon jai avancé sur mon problème mais reste désormais bloqué sur une regle htaccess

<VirtualHost *:80>
ServerAdmin webmaster@siteprincipal.com
DocumentRoot /home/principal/www
SuexecUserGroup principal users
ServerName www.siteprincipal.com
ServerAlias siteprincipal.com
CustomLog logs/principal-access_log combined
ScriptAlias /cgi-bin/ /home/principal/cgi-bin/
AddHandler x-httpd-php5 .php
</VirtualHost>

J'ai donc créé un site secondaire accessible par l'url : www.siteprincipal.com/secondaire sans aucun probleme.

Voici la règle de mon htaccess
RewriteRule ^([a-z]*)\/$ /interface/index.php?site_titre=$1 [QSA,L]

Le dossier secondaire n'existe pas, c'est donc la premiere variable qui est envoyé à site_titre

J'ai acheté un second nom de domaine que j'ai configuré de la sorte :

<VirtualHost *:80>
ServerAdmin webmaster@sitesecondaire.com
DocumentRoot /home/principal/www/secondaire
SuexecUserGroup principal users
ServerName www.sitesecondaire.com
ServerAlias sitesecondaire.com
CustomLog logs/secondaire-access_log combined
ScriptAlias /cgi-bin/ /home/principal/cgi-bin/
AddHandler x-httpd-php5 .php
</VirtualHost>

En tapant www.sitesecondaire.com
The requested URL /interface/index.php was not found on this server.

L'erreur me fait comprendre que je dois changer mon .htaccess
RewriteRule ^([a-z]*)\/$ http://www.siteprincipal.com/interface/ ... e_titre=$1 [QSA,L]

je fais ca, la redirection marche alors, mais je perds completement le nom de domaine deblocage-code.com dans l'url...et je perds aussi la variable $_GET[site_titre] dans la page d'après...

Merci pour votre aide
 
WRInaute impliqué
Salut,

J'ai lu rapidement ta config Apache, mais déjà je suis étonné qu'Apache accepte cette configuration si le dossier /home/principal/www/secondaire n'existe pas. Enfin soit, c'est pas tout à fait ce qu'il faut faire.

Le principe est que tous les noms de domaines devront pointer au même endroit, et c'est en PHP que tu devras gérer la page à afficher.

Donc soit tu crée un VirtualHost à chaque nouveau domaine (il y a moyen d'automatiser ça, mais bon...).
Soit tu fait un VirtualHost qui accepte tous les domaines.

Dans les 2 cas, le VirtualHost devra pointer à la racine de ton site.

Ensuite, le fichier index.php à la racine de ton site devra regarder quel HTTP_HOST est demandé, et afficher la page en conséquence.

Voilà j'espère t'avoir éclairé un peu plus. Je n'ai jamais fait ça en pratique, ça reste du théorique... mais ça devrait fonctionner :wink:
 
Nouveau WRInaute
Pourrais tu me montrer un exemple de ce que tu ferais dans l'index.php avec le HTTP_HOST ?

j'essaierai ensuite de voir par moi meme comment automatiser...

Sinon j'essaie d'avancer egalement de mon coté, et dis moi stp si tu as une idée du pourquoi de mes bugs ? ;)

il y a quelque chose que je comprends pas (reprenons le htaccess d'origine)
dans le virtualhost d'origine je change l'emplacement vers le dossier existant

<VirtualHost *:80>
ServerAdmin webmaster@sitesecondaire.com
DocumentRoot /home/principal/www/interface
SuexecUserGroup principal users
ServerName www.sitesecondaire.com
ServerAlias sitesecondaire.com
CustomLog logs/secondaire-access_log combined
ScriptAlias /cgi-bin/ /home/principal/cgi-bin/
AddHandler x-httpd-php5 .php
</VirtualHost>

Il y a un fichier index.php à l'intérieur

Je tape www.sitesecondaire.com -> j'obtiens l'erreur suivante : The requested URL /interface/index.php was not found on this server.

Je tape www.sitesecondaire.com/index.php -> la page index.php est interprété mais elle plante car elle ne recoit pas l'id du site

Ma question numéro 1 est pourquoi me dit il que la page n'existe pas alros que lorsque je la tape, il la trouve ?

je tape www.sitesecondaire.com/index.php?site_t ... blocageall --> la page s'affiche

Ma question numéro 2, est il possible de définir entre les balises <VirtualHost *:80> </VirtualHost> ma variable site_titre ?

Merci de ton aide FloBaoti
 
WRInaute impliqué
playactu a dit:
Pourrais tu me montrer un exemple de ce que tu ferais dans l'index.php avec le HTTP_HOST ?
Euh ben tout simplement:
Code:
<?php
if($_SERVER['HTTP_HOST'] == 'sitesecondaire1.com')
{
$site = 'bla';
}
else if(...)
{
...
}
?>
Tu peux par exemple avoir une requete MySQL pour aller voir à quel utilisateur appartient tel domaine. Puis à la fin de toutes les conditions, inclure la page qui affiche ce qu'il faut.

playactu a dit:
j'essaierai ensuite de voir par moi meme comment automatiser...
Il s'agit en fait d'éditer ton fichier de configuration Apache, et de recharger la configuration (/etc/init.d/apache reload sous Debian par exemple...)

playactu a dit:
Je tape www.sitesecondaire.com -> j'obtiens l'erreur suivante : The requested URL /interface/index.php was not found on this server.
C'est "normal". Tu as un .htaccess dans le dossier parent (dossier du dessus). Et par défaut, Apache fait hériter les .htaccess aux dossiers de la branche inférieure.
Donc solution: mettre un .htaccess dans ton dossier /interface/ avec:
RewriteEngine Off
par exemple si tu n'as plus besoin de rewriting...

playactu a dit:
Je tape www.sitesecondaire.com/index.php -> la page index.php est interprété mais elle plante car elle ne recoit pas l'id du site
C'est justement cette page qu'il faudra modifier pour savoir de quel site on parle (le HTTP_HOST...)...

playactu a dit:
Ma question numéro 2, est il possible de définir entre les balises <VirtualHost *:80> </VirtualHost> ma variable site_titre ?
Ca doit être possible oui... regarde du côté des variables d'environnement Apache...
Ca éviterait effectivement une requête à la base de données...

@+
 
Discussions similaires
Haut