Sous-domaines dynamiques (Bind, Apache et .htaccess)

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par doic, 14 Janvier 2008.

  1. doic
    doic WRInaute impliqué
    Inscrit:
    7 Novembre 2003
    Messages:
    952
    J'aime reçus:
    0
    Bonjour,

    Je sais que le sujet a déjà été traité plusieurs fois... mais je n'ai pas réussi à trouver la solution qui me convient.

    J'ai un serveur dédié (OVH) sur lequel j'héberge tous mes sites.
    Pour l'un deux, je souhaite donc gérer les sous-domaines de manière automatique.
    *http://bar.domaine.com -> *http://www.domaine.com/index.php?foo=bar

    J'ai modifié le .htaccess à la racine de domaine.com:
    Code:
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\.domaine.com
    RewriteCond %{HTTP_HOST} !^sql\.domaine.com
    RewriteCond %{HTTP_HOST} !^admin\.domaine.com
    RewriteCond %{HTTP_HOST} ^([^.]+)\.domaine.com
    RewriteRule ^(.*)$ /index.php?foo=%1
    J'ai modifié la zone DNS:
    Code:
    ...
    imap            IN      A       213.251.181.112
    sql             IN      A       213.251.181.112
    mysql           IN      A       213.251.181.112
    *		IN	A	213.251.181.112
    Et mon httpd.conf:
    Code:
    ...
    <VirtualHost 213.251.181.112>
            DocumentRoot /home/domaine/www
            ServerName *.domaine.com
    </VirtualHost>
    
    <VirtualHost 213.251.181.112>
            ServerAdmin webmaster@domaine.com
            DocumentRoot /home/domaine/www
            User domaine
            Group users
            ServerName www.domaine.com
            ServerAlias domaine.com
            CustomLog logs/domaine-access_log combined
            ScriptAlias /cgi-bin/ /home/domaine/cgi-bin/
    </VirtualHost>
    Alors, mes sql.domaine.com etc... fonctionnent bien,
    Mais tous les sous-domaines qui devraient être pris en compte par le wildcard... non.
    En fait, ils pointent (à priori) bien sur mon serveur, mais à la racine du serveur.
    Je ne sais pas comment les faire pointer sur mon domaine, pour que le .htaccess prenne le relais...
     
  2. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 593
    J'aime reçus:
    0
    Ce ne serait pas plus simple de vérifier la valeur de HTTP_HOST dans ton script?

    Je ne suis pas sûr que tu puisses utiliser "*.domaine.com" dans un ServerName. Mais si aucun ServerName ou ServerAlias ne correspond, c'est le premier VirtualHost (pour cette IP) qui sera utilisé, donc il faut bien que l'entrée correspondante soit la première. Je suppose évidemment que tu as déjà un "NameVirtualHost 213.251.181.112" dans ton httpd.conf...

    Pour vérifier que c'est le bon VirtualHost qui est pris en compte, mets-lui (par exemple) un DocumentRoot différent pour voir ce que ça donne. Regarde aussi la valeur du virtual host indiqué dans le log...

    Jacques.
     
  3. doic
    doic WRInaute impliqué
    Inscrit:
    7 Novembre 2003
    Messages:
    952
    J'aime reçus:
    0
    Pour le moment, je n'accède pas au script, mes *.domaine.com pointent directement à la racine de mon serveur. (Ou bien je ne comprends pas ce que tu me dis)...

    Effectivement, il faudrait peut-être avoir un ServerName *.domaine.com ?
    Est-ce que tu peux me suggérer un bon virtualhost à configurer ?
    (J'ai bien un "NameVirtualHost 213.251.181.112" dans mon httpd.conf)
     
  4. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 593
    J'aime reçus:
    0
    Je dis que plutôt que faire des rewrite, tu fais tout pointer sur un script unique (ou en tous cas une arbo unique), et au début du/des script(s) tu prends la valeur de HTTP_HOST et tu en extrais ce qui t'intéresse, plutôt que de récupérer ça dans une variable.

    Tu en as un, mais je ne suis pas sûr ce ça marche, et en tous cas ce n'est pas nécessaire: il suffit de mettre ton VirtualHost en premier pour qu'il récupère toutes les requêtes qui ne correspondent à aucun autre VirtualHost (via ServerName ou ServerAlias).

    Jacques.
     
  5. doic
    doic WRInaute impliqué
    Inscrit:
    7 Novembre 2003
    Messages:
    952
    J'aime reçus:
    0
    OK, j'ai compris, c'est vrai que ça parait plus solide, et moins gourmand en ressources.

    Hmmm... Donc j'utilise ServerName ou ServerAlias ?
    Et je mets tout dans le même <VirtualHost> ?
    Pourquoi le mettre en premier ? Il ne faudrait pas le mettre en dernier ? Pour qu'il soit pris en compte comme "redirection par défaut" si le sous-domaine ne correspond pas à 'www' ou 'sql' ?
     
  6. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 593
    J'aime reçus:
    0
    Quand Apache ne trouve aucun VirtualHost qui corresponde à une requête, il utilise le premier (c'est dans la doc).

    Donc:

    NameVirtualHost adresse_ip

    <VirtualHost adresse_ip>
    ServerName default.domaine.com
    DocumentRoot path_pour_wildcard
    </VirtualHost>

    <VirtualHost adresse_ip>
    ServerName www.domaine.com
    ServerAlias domaine.com
    DocumentRoot path_pour_www
    </VirtualHost>

    <VirtualHost adresse_ip>
    ServerName autre.domaine.com
    DocumentRoot path_pour_autre
    </VirtualHost>

    Etc.

    Bref: tu commences par celui par défaut (le ServerName importe peu, mais c'est lui que tu verras dans les logs, les messages d'erreur, et les redirects "locaux"), puis tu mets tous les "spécifiques".

    Jacques.
     
  7. doic
    doic WRInaute impliqué
    Inscrit:
    7 Novembre 2003
    Messages:
    952
    J'aime reçus:
    0
    Je ne comprends pas, à quelle fréquence je peux faire mes essais ?
    Je viens d'enlever tout ce qui concerne les sous-domaines dans mon httpd.conf, et rien ne change...

    J'en déduis que rien ne marche après ma zone DNS...

    J'ai lu sur un forum qu'il fallait mettre le wilcard dans le DNS et dans la conf d'apache, mais toi tu me dis que le wildcard ne marche pas dans apache ??

    Aucun de mes tests ne débouche sur le DocumentRoot que je veux:
    <VirtualHost 213.251.181.112>
    ServerName *.domaine.com
    DocumentRoot /home/domaine/www/domaines
    </VirtualHost>

    Rien à faire, avec ce bloc ou sans ce bloc, tout aboutit à la racine du serveur... même pas à l'accueil de mon domaine !!
     
  8. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 593
    J'aime reçus:
    0
    Je suppose que tu relances bien ton serveur http?

    Non, je dis que le virtualhost "wildcard" c'est le premier, peu importe le nom que tu lui mets.

    On est bien d'accord que ce virtualhost est le premier de la liste?

    Jacques.
     
  9. doic
    doic WRInaute impliqué
    Inscrit:
    7 Novembre 2003
    Messages:
    952
    J'aime reçus:
    0
    Oui, je relance le serveur à chaque fois...

    Ce n'est pas le premier de la liste (j'ai plusieurs domaines) mais c'est le premier concernant le domaine en question..

    Je vais essayer en le mettant tout en haut... pour voir.
     
  10. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 593
    J'aime reçus:
    0
    Pour qu'il soit considéré comme le virtual host par défaut, il doit être le premier pour l'adresse IP associée.

    Sinon en regardant un peu plus la doc d'Apache (mais ce n'est pas super explicite), je pense que tu peux mettre un *.domaine.com dans ServerAlias mais pas dans ServerName (ce dernier devrait être un "vrai" nom). A vérifier...

    Jacques.
     
  11. doic
    doic WRInaute impliqué
    Inscrit:
    7 Novembre 2003
    Messages:
    952
    J'aime reçus:
    0
    Bon, je l'ai mis en tout premier, et maintenant, j'ai une erreur 500 si j'essaie d'accéder aux sous-domaines dynamiques.
    Dès que je le redescends, ça me rebalance sur la racine du serveur...
    Je dois donc avoir un problème dans mon bloc avec le wilcard ???

    OK, je viens de voir la réponse ci-dessus...
    Donc dans mon bloc, je mets seulement le ServerAlias ou un ServerAlias ET un ServerName ? Et dans ce cernier cas, je mets quoi dans le ServerName ? www.domaine.com ?
     
  12. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 593
    J'aime reçus:
    0
    C'est que tu as un autre problème ailleurs, mais tes logs t'en diront plus.

    Tu mets un ServerName et un ServerAlias. Le ServerName sera utilisé pour les messages d'erreurs, les logs, et les redirections locales. Il est aussi utilisé pour "matcher" les requêtes sur ce virtual host, donc si tu utilises www.domaine.com alors les requêtes sur ce domaine iront sur ce virtual host, ce dont je pense que ce n'est pas ce que tu veux, utilise donc un autre domaine "non spécifique". wildcard.domaine.com fait très bien l'affaire par exemple.

    Jacques.
     
  13. doic
    doic WRInaute impliqué
    Inscrit:
    7 Novembre 2003
    Messages:
    952
    J'aime reçus:
    0
    :'(
    Et je les trouve ou mes logs ?

    Pour "wildcard.domaine.com", est-ce que je le mets comme ça dans le fichier de conf, ou je dois le déclarer aussi dans les DNS ?
     
  14. doic
    doic WRInaute impliqué
    Inscrit:
    7 Novembre 2003
    Messages:
    952
    J'aime reçus:
    0
    Je ne sais toujours pas quoi faire...
    Maydey !! Jacques ! ;-)
     
  15. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 593
    J'aime reçus:
    0
    A l'endroit indiqué par ta configuration (directive ErrorLog).

    Pas nécessaire, il sera "récupéré" par le *.domaine.com...

    Jacques.
     
  16. doic
    doic WRInaute impliqué
    Inscrit:
    7 Novembre 2003
    Messages:
    952
    J'aime reçus:
    0
    Génial, tout fonctionne !
    le problème venait certainement du fait que *.domaine.com était lié à domaine.com... il faut bien lui attribuer un servername à part entière... (je sais pas si j'ai tout compris, mais ça marche c'est le principal)

    Par contre, en déclarant le wildcard en premier, ça plante:
    mon www.domaine.com et sql.domaine.com pointaient sur le documentroot de mon *.domaine.com

    J'ai donc déclaré le wildcard en dernier dans ma conf Apache, et là tout fonctionne :)

    Merci infiniment Jacques...

    Ca faisait tellement longtemps que je luttais !!
     
Chargement...
Similar Threads - domaines dynamiques (Bind Forum Date
Redirection sous domaines dynamiques URL Rewriting et .htaccess 13 Janvier 2015
Référencement avec sous domaines Problèmes de référencement spécifiques à vos sites Mardi à 10:40
Combien de domaines référents pour réussir son SEO ? Débuter en référencement 18 Juin 2021
Utilisation de sous domaines au lieu de noms de domaine propres Techniques avancées de référencement 18 Juin 2021
Trouver les noms de domaines contenant un mot particulier Noms de domaine et référencement 22 Mai 2021
Rediriger des domaines au nom explicite vers un domaine établi mais moins spécifique Netlinking, backlinks, liens et redirections 1 Février 2021
Redirection 301 Domaines et structures différentes URL Rewriting et .htaccess 26 Janvier 2021
rediriger les sous domaines vers la page d'accueil URL Rewriting et .htaccess 11 Janvier 2021
Sites avec noms de domaines différents par pays Référencement international (langues, pays) 30 Décembre 2020
Domaines Expirés : rediriger ou faire des sites ? Netlinking, backlinks, liens et redirections 3 Décembre 2020