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 domaine et partage de ressources


Sujet :

Apache

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 92
    Par défaut Sous domaine et partage de ressources
    Bonjour.

    Le titre n'est peut-être pas très explicite ni exact mais je ne sais pas trop comment résumer ce que je veux. Je ne sais même pas si je poste dans le bon forum

    Je suis en train de faire un CMS multi site et pour le moment tout fonctionne.
    Je n'ai qu'une version du site puisque tout est généré à la volée.

    L'accès aux sites se fait par sous-domaine (ex : http://test1.monsite.com/ pour accéder au site "test1")

    J'aimerais que chaque utilisateur puisse modifier certaines images, css et surtout envoyer des photos.

    Voilà l'arborescence pour ces ressources :
    - assets
    -- sites
    --- test1
    ---- assets
    ----- css
    ----- js
    ----- images
    ---- uploads

    Donc en gros pour accéder à une image j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://test1.monsite.com/assets/sites/test1/assets/uploads/mon_image.jpg
    Sauf que cela ne me plaît pas et j'aimerais avoir juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://test1.monsite.com/assets/uploads/mon_image.jpg

    En fait le réel problème est que je ne sais pas comment aborder ce problème

    Dois-je plutôt chercher du côté PHP, htaccess... ou autre ?

    Merci.

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Tu dois pouvoir y arriver avec la réécriture d'url.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 92
    Par défaut
    Justement c'est ce que je me disais mais comment faire pour savoir que mon sous-domaine correspond à un certain dossier ?

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Je suis pas vraiment expert Apache mais tu dois pouvoir manipuler les sous domaines en créant des alias. La procédure est expliquée ici.

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    As tu fais le tour coté fonctionnalités de ton hébergeur pour voir s'il y a des choses pour gérer des domaines et sous-domaines ?

    L'accès aux sites se fait par sous-domaine (ex : http://test1.monsite.com/ pour accéder au site "test1")
    Ce n'est pas le cas, à mon sens tu aurais pour le moment 1 seul domaine (monsite.com), et son nom aurait été changé par : test1.monsite.com

    Le chemin du virtualhost de ce domaine (et non sous-domaine) serait du genre : /home/
    A la racine de ton espace d'hébergement (à priori).
    J'ai mis "home" car le nom du répertoire serait celui avant le 1er "assets".

    Ou alors tu aurais créer un sous-domaine au nom de "test1", mais le chemin défini ne pointerait pas vers le répertoire "test1", mais vers la racine (comme domaine.com).

    Comment as tu créé ce sous-domaine ?


    Ne faudrait il pas (pure exemple) avoir une structure comme :
    - assets
    -- sites
    --- www : domaine.com (chemin du virtualhost : /home/assets/sites/www)
    --- test1 : test1.domaine.com (chemin du virtualhost : /home/assets/sites/test1)
    --- test2 : test2.domaine.com (chemin du virtualhost : /home/assets/sites/test2)
    ... etc ...
    En somme, qu'il y aurait aucune imbrication des différents sites/virtualhost.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 92
    Par défaut
    @Benjamin Delespierre : Si c'est faisable avec un alias je ne vois pas du tout comment ^^

    @RunCodePhp : Je n'ai pas fait le tour puisque pour le moment je fais tout en local donc tout est possible

    Si je vais sur http://test1.monsite.com/ ma config se met à jour pour aller chercher les infos dans la BDD pour le site test1.

    Pour résumé j'ai ça (j'utilise CodeIgniter) :
    - www
    -- applications
    -- assets
    --- admin
    ---- css
    ---- js
    ---- images
    --- sites
    ---- test1
    ----- assets
    ------ css
    ------ js
    ------ images
    ----- uploads
    ---- test2
    ----- assets
    ------ css
    ------ js
    ------ images
    ----- uploads
    -- system

  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Si je vais sur http://test1.monsite.com/ ma config se met à jour pour aller chercher les infos dans la BDD pour le site test1.
    En local c'est localhost (ou 127.0.0.1) qui est le domaine en local, et la racine se trouve dans www (par défaut).
    Sans avoir fait quoi que soit dans Apache ou dans un .htaccess ça me parais impossible qu'une telle URL aboutisse quelque part.
    Mais je peux me tromper.


    Mise à part ça, le principe est le même que ce soit en local ou distant.

    Vu que tu est en local, tu as tout le loisir de créer autant de virtualhost que tu veux.
    Il faut juste que les chemins des virtualhost pointes bien sur les répertoires en question.


    Personnellement j'utilise WampServer en local, et jusqu'à lors j'ai jamais utilisé la création d'alias qu'offre Wamp.
    Je fais cela manuellement (si on peu dire).

    Dans le httpd.conf, j'ai dé dé-commenté la ligne : (pour ajouter des virtualhost)
    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf

    Puis coté de Apache, dans : ...../wamp/bin/apache2.2.21/conf/extra/httpd-vhost.conf
    J'ai ceci (pour exemple)
    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
    #####  #####
    <VirtualHost *:80>
        ServerAdmin truc@fai.re
        DocumentRoot "D:/zfTest/public/"
        ServerName zftest.dom1:80
        ErrorLog "D:/wamp/logs/apache_error.log"
        CustomLog "D:/wamp/logs/access.log" common
     
        <Directory "D:/zfTest/public/">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
                Order Deny,Allow
                Deny from all
                Allow from 127.0.0.1 zftest.dom1
        </Directory>
    </VirtualHost>
    (on peu en rajouter autant qu'on veut).

    Puis étant sur XP, dans : C:\WINDOWS\system32\drivers\etc\hosts
    -> hosts est un fichier. Je rajoute une ligne comme ceci :
    127.0.0.1 zftest.dom1
    Puis redémarrage des services coté WampServer (Apache).
    C'est Ok (donc tout sans aucun .htaccess)
    J'accède au nouveau site avec : -http://zftest.dom1

    Il y a peut être plus simple.


    Mais un conseil, regarde du coté de ton hébergeur si tu auras moyen de faire la même chose sans .htaccess.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 92
    Par défaut
    Mes vhosts fonctionnent très bien ce n'est pas le problème

  9. #9
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Mes vhosts fonctionnent très bien ce n'est pas le problème
    S'ils fonctionnaient bien tu n'aurais pas ce problème, à mon avis.

    A mon sens ce n'est pas des sous-domaines que tu souhaiterais faire/créer, mais de la réécriture pure et simple.
    En somme, de faire de la réécriture avec des URLs de la même forme que des sous-domaines.


    Ceci dit, en créant des vhosts correctement il n'y pas de réécriture à faire, c'est nettement plus simple, sans compter que c'est aussi plus sécurisé.
    D'ailleurs, il ne devrait pas être possible de pointer une URL vers www ou assets (le 1er).
    Du moins sur un serveur distant (en local la sécurité importe peu).


    Vu que tu ne dis pas comment tu as créer ce sous domaine test1.domaine.com, il me parais difficile d'aller plus loin.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 92
    Par défaut
    Nan nan c'est juste que tu n'as pas compris mon problème.

    Je n'ai pas créé de sous-domaine test1.domaine.com puisqu'il se crée tout seul.

    Dans mon dossier assets j'ai un dossier sites/test1 qui contient les fichiers du site test1.domaine.com

    J'y accède via test1.domaine.com/assets/sites/test1/monfichier

    Ce que je veux c'est y accéder via test1.domaine.com/assets/monfichier pour que ce soit plus propre dans le code c'est tout.

  11. #11
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Je n'ai pas créé de sous-domaine test1.domaine.com puisqu'il se crée tout seul.
    Non, rien ne se crée tout seul, c'est impossible, il y a forcément quelque chose qui le créé, comme la réécriture par exemple.
    (C'est comme dans la nature : rien ne se créé, tout se transforme)

    La question c'est : à quel niveau ?
    Si toi même tu ne le sais pas, alors ça va être compliqué.


    Peut être qu'on ne se comprend pas, de mon coté je dirais que c'est toi qui me comprendrais pas.
    On est pas loin de l'impasse.

    Si un autre membre, un oeil extérieur pouvait intervenir, ça serait bien.

    Personnellement je ne vois pas comment développer un peu plus ce que je perçois, quand bien même je ferais erreur.
    J'ai déjà expliqué avec un code d'exemple qui va avec.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 92
    Par défaut
    Ça se crée "plus ou moins" tout seul.

    Mon vhost :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <VirtualHost *:80>
    	DocumentRoot "C:/serveur_web/www/monsite/"
    	ServerName www.monsite.com
    	ServerAlias www.monsite.com
    	ErrorLog "logs/monsite.local-error.log"
    	CustomLog "logs/monsite.local-access.log" common
    </VirtualHost>
    Et mon .htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{HTTP_HOST} !^www\.monsite\.com
    RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9-]+)\.monsite\.com [NC]
    RewriteRule ^(.*)$ index.php/$1 [L]
    Donc pour moi le sous-domaine se crée tout seul dans le sens que je ne crée pas quelque part en dur test1.monsite.com

  13. #13
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Ok, c'est bien ce que je pensais, c'est que test1.domaine.com, test2.domaine.com, etc ... ne pas des sous-domaine, pas directement au niveau de Apache, ils n'y sont pas.
    C'est ton .htaccess qui le gère par de la réécriture.

    Fallait le mettre dès le début.

    Cependant, je réitère :
    Pourquoi ne pas supprimer ce .htaccess là, et créer autant de vhost (coté Apache) qu'il y aura de sous-domaine ?
    Il n'y aura pas à gérer cela avec un .htaccess, et les URLs seront bonnes, propres d'office.

    S'il y a de la réécriture dans chaque vhost (dans test1, test2, etc ...), il suffira de rajouter un .htaccess dans chaque vhost avec leur propre règles.

    Ceci dit, il faudrait voir aussi du coté de CodeIgniter, que je ne connais pas, du coté du routage, structuration pour gérer plusieurs sites/sous-domaines avec un seul FW.

    De mon coté je connais un peu Kohana, qui parait il est basée de CodeIgniter.
    Il à l'air d'avoir quelques points communs : system, application.
    Pour exemple, si je souhaite gérer plusieurs sites Web avec 1 seul FW (plusieurs sous-domaines), je structure comme ceci :
    - ProjetKohana
    -- applitest1
    -- applitest2

    -- system

    -- test1 (chemin du vhost défini sur ce répertoire test1)
    -- test2 (chemin du vhost défini sur ce répertoire test2)

    Une fois fait, j'accède directement aux divers sites test1 et test2 sans avoir recourt à un .htaccess (à part ceux dans test1 et test2 liés au FW, le routage)


    Maintenant, peut être ne souhaites tu pas faire ainsi, mais tout gérer par 1 seul domaine (ou sous-domaine, peu importe) via un .htaccess par de la réécriture.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 92
    Par défaut
    En effet je ne veux pas ça puisque chaque utilisateur crée son propre site donc je ne peux pas créer de vhost à chaque fois.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 92
    Par défaut
    On ne peut pas faire une sorte de raccourci dans le htaccess ?

  16. #16
    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
    Par défaut
    Je me mèle à la discussion un peu comme un cheveu sur la soupe

    Citation Envoyé par p4ndore Voir le message
    @RunCodePhp : Je n'ai pas fait le tour puisque pour le moment je fais tout en local donc tout est possible
    En fait, cette question est cruciale : quel est ton plan pour l'hébergement du site ? Mutualisé ou dédié ? Si tu veux passer par un hébergement mutualisé, tu vas être limité dans ce que tu veux faire : tu ne pourras peut-être pas avoir plusieurs sous-domaines comme ça, et tu ne pourras pas forcément utiliser toutes les possibilités de configuration que propose Apache.

    Petite question pour bien comprendre ton CMS. Quand tu demandes http://test1.monsite.com/, tu tombes sur quel répertoire ?

    Pour info, généralement quand tu gères des sous-domaines, c'est une mauvaise idée que de mettre les fichiers de tes sous-domaines dans des sous-répertoires d'un document root quelconque. Sauf cas particulier, chaque sous-domaine devrait avoir son propre document root distinct de tous les autres document roots du système pour des raisons de sécurité. Par exemple, avec l'exemple que tu donnes dans ton premier message, http://test2.monsite.com/assets/sites/test1/assets/uploads/mon_image.jpg est une URL tout à fait fonctionnel

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 92
    Par défaut
    Ce sera forcément un dédié

    Je ne me vois proposé un service comme ça sur un mutu ^^

    En fait je n'ai que 3 dossiers pour mon appli : front, back et sites

    Quand je demande http://test1.monsite.com/ j'arrive dans sites et je génère le site à la volée.

    Si j'arrivais à transformer mon URL en http://test1.monsite.com/assets/uploads/mon_image.jpg je pourrais peut-être empêcher l'accès à http://test2.monsite.com/assets/site.../mon_image.jpg ?

  18. #18
    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
    Par défaut
    Oui, il y a toujours moyen mais ce n'est pas terrible. Le mieux c'est d'avoir des fichiers organisés de telle manière que ce genre d'URL croisée ne marche pas.

    Alors, si tu pars sur un serveur dédié, il y a des choses que tu peux envisager : le mass virtual hosting. C'est avoir un seul bloc <VirtualHost> pour gérer différents sous-domaines en calculant un document root distinct pour chaque sous-domaine. Si le sous-domaine www ne rentre pas dans "moule" notamment parce que tu n'as pas de sous-répertoire www, tu crées un VH dédié à www que tu places avant le VH pour tous les autres sous-domaines, mais le plus simple c'est de tout faire pareil. Ca pourrait ressembler à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <VirtualHost *:80>
        ServerName www.monsite.com
        ServerAlias *.monsite.com
        UseCanonicalName Off
        VirtualDocumentRoot "C:/serveur_web/www/assets/sites/%1"
    </VirtualHost>
    Tu as alors le document root C:/serveur_web/www/assets/sites/www pour www.monsite.com, C:/serveur_web/www/assets/sites/test1 pour test1.monsite.com, etc.

    C'est une solution acceptable ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/04/2012, 18h33
  2. [PHP 5.3] Partage de cookie entre deux sous domaines
    Par The Goion dans le forum Langage
    Réponses: 2
    Dernier message: 03/05/2011, 10h00
  3. Réponses: 13
    Dernier message: 21/04/2010, 18h59
  4. Partager des fichiers entre sous-domaine
    Par mikyfpc dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 10/03/2008, 22h30
  5. Partage des ressources sous windows XP
    Par GBAGO dans le forum Windows XP
    Réponses: 2
    Dernier message: 20/02/2006, 07h40

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