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 :

Union avec même mapping sur deux répertoires différents


Sujet :

Apache

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 72
    Points
    72
    Par défaut Union avec même mapping sur deux répertoires différents
    Salut,

    je voudrais savoir si il était possible de mapper un espace de nom genre http://host.com/bidule/

    sur un dossier /cheminunix/dossier1 et sur un /cheminunix/dossier2 avec
    $ ls /cheminunix/dossier1
    a.jpg b.gif c.pdf
    $ ls /cheminunix/dossier2
    x.jpg y.gif z.pdf

    tel que ceci fonctionne

    http://host.com/bidule/a.jpg
    http://host.com/bidule/b.gif
    http://host.com/bidule/c.pdf
    http://host.com/bidule/x.jpg
    http://host.com/bidule/y.gif
    http://host.com/bidule/z.pdf

    le but est de se sortir d'une situation plus ou moins inextricable où il serait bon de séparer ressources dynamiques et statiques, sans pouvoir pour autant changer toutes les urls

    avec les unix/linux récents il est possible de faire des union mounts au niveau système de fichier, mais ça serait moins gérable

  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
    Dans l'absolu, ça ne doit pas être possible facilement. L'option que je vois c'est passer par mod_rewrite pour vérifier la présence du fichier dans le premier répertoire et aller voir dans le second si jamais il n'existe pas dans le premier. Ca donnerait ceci, à mettre dans le .htaccess à la racine du site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    RewriteCond %{REQUEST_URI} ^/bidule/(.*)
    RewriteCond /cheminunix/dossier1/%1 -f
    RewriteRule .* /cheminunix/dossier1/%1 [L]
     
    RewriteCond %{REQUEST_URI} ^/bidule/(.*)
    RewriteCond /cheminunix/dossier1/%1 !-f
    RewriteRule .* /cheminunix/dossier2/%1 [L]
    Il faut aussi que le bloc <Directory /cheminunix> ou équivalent pour dossier1 et dossier2 contienne un Allow from all sinon il y aura une erreur 403.

    A tester, je ne l'ai pas fait.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 72
    Points
    72
    Par défaut
    je vais regarder de plus près ta solution

    sinon j'ai pensé à une autre solution
    c'est utiliser union mount sur la totalité de l'arborescence de l'appli web

    de façon à avoir /foo/A et /foo/B montés en union sur /foo/D et changer la racine apache de façon à ce que ça soit /foo/D la base plutot que /foo/A

    de cette façon il y aucun mappings à faire au niveau de la config apache, par contre cette solution marche que pour unix et linux

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    Dans l'absolu, ça ne doit pas être possible facilement. L'option que je vois c'est passer par mod_rewrite pour vérifier la présence du fichier dans le premier répertoire et aller voir dans le second si jamais il n'existe pas dans le premier. Ca donnerait ceci, à mettre dans le .htaccess à la racine du site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    RewriteCond %{REQUEST_URI} ^/bidule/(.*)
    RewriteCond /cheminunix/dossier1/%1 -f
    RewriteRule .* /cheminunix/dossier1/%1 [L]
     
    RewriteCond %{REQUEST_URI} ^/bidule/(.*)
    RewriteCond /cheminunix/dossier1/%1 !-f
    RewriteRule .* /cheminunix/dossier2/%1 [L]
    Il faut aussi que le bloc <Directory /cheminunix> ou équivalent pour dossier1 et dossier2 contienne un Allow from all sinon il y aura une erreur 403.

    A tester, je ne l'ai pas fait.
    ça ne fonctionne pas, le probleme c'est qu'apres la rewriterule, apache ajoute quand même le préfixe du dossier, donc ça donne /cheminunix/dossier1//cheminunix/dossier2/lefichier.blabla

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 72
    Points
    72
    Par défaut
    j'ai trouvé une solution


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	RewriteCond %{REQUEST_URI} ^/bidule/(.*)
    	RewriteCond %{REQUEST_FILENAME} !-f
    	RewriteRule .* /bidule222/%1 [L]
    la redirection se fait en interne, sur l'alias /bidule222/ /cheminunix/dossier2 et le dossier définit

Discussions similaires

  1. Problème avec un projet sur deux machines différentes
    Par dz_robotix dans le forum Visual C++
    Réponses: 3
    Dernier message: 20/02/2012, 18h00
  2. Réponses: 17
    Dernier message: 30/05/2011, 10h14
  3. Réponses: 4
    Dernier message: 26/08/2009, 21h55
  4. Réponses: 2
    Dernier message: 06/05/2009, 23h50
  5. Réponses: 3
    Dernier message: 09/07/2008, 01h25

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