IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Sous domaines, VirtualHost et réécriture d'url


Sujet :

Apache

  1. #1
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut Sous domaines, VirtualHost et réécriture d'url
    Bonjour,

    Je travail sur un site qui doit pouvoir gérer les sous domaines a l'infini car je propose un service apparenté aux blog.

    en gros chaque personne qui s'inscrit aura son blog à l'adresse nom-choisi.monsite.fr.

    Actuellement, à chaque inscription, je cré un nouveau dossier avec dedans un fichier index.php qui va se charger de faire l'appel au script qui génère le blog en passant l'id en paramètre.

    Mais aujourd'hui je commence a avoir beaucoup de dossier créer inutilement car je suis sur que l'on peut s'en passer.

    voici mon VirtualHost :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <VirtualHost *>
    	ServerName monsite.fr
    	ServerAlias *.monsite.fr
    	UseCanonicalName Off
    	VirtualDocumentRoot /home/www/web/%1
    	<Directory />
            	Options FollowSymLinks
    	        AllowOverride All
    	</Directory>
    </VirtualHost>
    Je n'ai pas envi de tout casser donc je voudrais savoir si on peut remplacer le VirtualDocumentRoot pour pointer directement sur le script qui génère de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <VirtualHost *>
    	ServerName monsite.fr
    	ServerAlias *.monsite.fr
    	UseCanonicalName Off
    	VirtualDocumentRoot /home/www/web/chemin/acces/script.php?param=%1
    	<Directory />
            	Options FollowSymLinks
    	        AllowOverride All
    	</Directory>
    </VirtualHost>
    De plus j'aimerai ajouter de la réécriture d'url sur mes pages qui s'affiche actuellement de cette façon :
    nom-choisi.monsite.f/index.php?page=1

    Est il possible d'appliquer les règles de réécritures directement entre les balise <Directory > ?

    Merci

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par Seb33300 Voir le message
    Je n'ai pas envi de tout casser donc je voudrais savoir si on peut remplacer le VirtualDocumentRoot pour pointer directement sur le script qui génère de cette façon :
    Clairement non : DocumentRoot et VirtualDocumentRoot doivent pointer sur un répertoire, pas un fichier.

    Pour la création de tes blogs, il faut que tu passes par un script qui va se charger d'appeler le script index.php (avec wget par exemple) ou le script appelé par index.php pour générer le blog. C'est le seul moyen d'automatiser ta création.

    Citation Envoyé par Seb33300 Voir le message
    Est il possible d'appliquer les règles de réécritures directement entre les balise <Directory > ?
    D'après la doc Apache, oui.

  3. #3
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    Je ne comprend pas trop ce que tu veux dire.

    Je voudrais juste que mon sous domaine pointe sur un fichier sur lequel je peux passer un paramètre GET.

    Car actuellement, les sous domaine pointe tous sur des dossier différent que je doit généré a chaque fois qu'un sous domaine est créé et dans lequel je place le script qui va faire appel au même fichier pour tous les sous domaines.

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Dans ce cas, pourquoi utiliser des dossiers différents et pas plutôt un seul que tu déclare avec un simple DocumentRoot ?

    Ton script sert uniquement à créer le blog et après il est mis à la poubelle ou bien il sert après création du blog ? Et avec un alias, ça n'irait pas ?

  5. #5
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    Car dans le index.php du dossier généré je détermine l'id du blog
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $SiteId = 'Id en dur pour identifier le site';
    include('Mon fichier qui généré le blog.php');
    ?>

    A la limite, je devrais pouvoir le retrouver à partir de l'url :/

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Ca serait peut-être préférable et plus simple : si possible faire une requête sur une base de données ou utiliser une table de mapping.

  7. #7
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    OK ça marche comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <VirtualHost *>
    	ServerName monsite.fr
    	ServerAlias *.monsite.fr
    	UseCanonicalName Off
    	VirtualDocumentRoot /home/www/web/ssdom
    	<Directory />
            	Options FollowSymLinks
    	        AllowOverride All
    	</Directory>
    </VirtualHost>
    Par contre il y a un autre probleme.

    Mon domaine principal www.monsite.fr est lui aussi redirigé vers ssdom.
    J'aimerai le rediriger vers www comment faire ? je n'y arrive pas

  8. #8
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Je ne sais pas trop : on pourrait se dire qu'il faut créer un nouveau virtual host, mais je ne sais pas du tout si ça marcherait à cause du *.monsite.fr qui matche aussi www.monsite.fr. En gros, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <VirtualHost *>
    	ServerName www.monsite.fr
    	UseCanonicalName Off
    	DocumentRoot /home/www
    	<Directory />
            	Options FollowSymLinks
    	        AllowOverride All
    	</Directory>
    </VirtualHost>
     
    <VirtualHost *>
    	ServerName monsite.fr
    	ServerAlias *.monsite.fr
    	UseCanonicalName Off
    	VirtualDocumentRoot /home/www/web/ssdom
    	<Directory />
            	Options FollowSymLinks
    	        AllowOverride All
    	</Directory>
    </VirtualHost>
    Bien respecter l'ordre des VH (www.monsite.fr en premier) pour qu'Apache traite www.monsite.fr en premier avant le *.monsite.fr.

  9. #9
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    On a essayé cette solution mais on arrive pas à la faire fonctionner.

    Du coup on a fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <VirtualHost *>
    	ServerName monsite.fr
    	ServerAlias *.monsite.fr
    	UseCanonicalName Off
    	VirtualDocumentRoot /home/www/web/
    	<Directory />
            	Options FollowSymLinks
    	        AllowOverride All
    	</Directory>
    </VirtualHost>
    Tout pointe vers le dossier web.

    Ensuite dans le dossier web on a placé un .htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    # On envoie www.monsite.fr et monsite.fr vers www/
    RewriteCond %{http_host} ^monsite.fr [NC]
    RewriteRule ^(.*)$ http://www.monsite.fr/$1 [R=301,L]
     
    RewriteCond %{http_host} ^www.monsite.fr 
    RewriteCond %{REQUEST_URI} !^/www/
    RewriteRule ^(.*)$ www/$1 [L]
     
    # Gestions de quelques exceptions
    # Zone admin
    RewriteCond %{http_host} ^admin.monsite.fr 
    RewriteCond %{REQUEST_URI} !^/admin/
    RewriteRule ^(.*)$ admin/$1 [L]
     
    # etc...
     
    # Tous les autres sous domaines vers un dossier dédier
    # Ne fonctionne pas !
    #RewriteCond %{http_host} ^(.*).monsite.fr 
    #RewriteCond %{REQUEST_URI} !^/ssdom/
    #RewriteRule ^(.*)$ sebastien/$1 [L]
    Mais la derniere condition ne fonctionne pas :
    Lorsque c'est commenté ok tout fonctionne il n'y a pas de souci mais les autres sous domaine pointe vers web/
    Et lorsque je rajoute la dernière condition pour faire pointer n'importe kel autre sous domaine vers web/ssdom/, sa fonctionne mais les autres condition précédentes ne fonctionne plus...

  10. #10
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    C'est logique car tes dernières conditions valent pour toutes les requêtes (notamment RewriteCond %{http_host} ^(.*).monsite.fr). Il faut que tu rajoutes à la fin des RewriteCond pour dire que admin...., www.... etc. ne doivent pas être réécrites par cette règle. Du coup, ta première condition ne sert plus à grand-chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # Tous les autres sous domaines vers un dossier dédier
    RewriteCond %{http_host} !^monsite\.fr
    RewriteCond %{http_host} !^www\.monsite\.fr
    RewriteCond %{http_host} !^admin\.monsite\.fr
    RewriteCond %{REQUEST_URI} !^/ssdom/
    RewriteRule ^(.*)$ sebastien/$1 [L]
    Au passage, si tu veux identifier un point plutôt que n'importe quel caractère dans un RewriteCond, il faut mettre un \ devant.

  11. #11
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    Ah ok mais je pensais que la balise [L] allé empêcher de traiter ce cas si un autre avait été détecté avant.

    Je vais tester ça et je dirais le résultat d'ici demain.

  12. #12
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par Seb33300 Voir le message
    Ah ok mais je pensais que la balise [L] allé empêcher de traiter ce cas si un autre avait été détecté avant.
    Justement non : ça interrompt la boucle en cours mais mod_rewrite n'arrête de traiter les règles que lorsqu'il arrive à converger vers une URL.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VirtualHost et réécriture d'url
    Par marcandre dans le forum Apache
    Réponses: 3
    Dernier message: 12/12/2011, 15h26
  2. Sous-domaine virtuel et réécriture d'URL
    Par Feng-Huang dans le forum Apache
    Réponses: 1
    Dernier message: 21/07/2009, 13h26
  3. sous domaine virtualhost
    Par guidorange dans le forum Apache
    Réponses: 3
    Dernier message: 04/09/2008, 17h50
  4. [Apache] URL Rewriting et sous domaines
    Par goldorax113 dans le forum Apache
    Réponses: 6
    Dernier message: 10/05/2006, 09h50
  5. [URL] Sous domaines dynamiques.
    Par Nairolf7 dans le forum Hébergement
    Réponses: 2
    Dernier message: 17/05/2005, 10h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo