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 :

URL Rewriting et Path Rewriting


Sujet :

Apache

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut URL Rewriting et Path Rewriting
    Bonjour à tous,

    Voici ma problématique :
    Je souhaite développer un site Web en multi-domaines. J'ai besoin que le dossier de ressources-images (entre-autre...) utilisé soit dépendant de l'URL (Pour avoir une charte graphique qui diffèrent selon l'URL).

    J'ai un certain nombre de dossiers : /images_domaine1/ - /images_domaine2/ - /images_domaine3/ - ...

    J'ai donc rédigé un .htaccess pour associer ces dossiers aux URL, avec des RewriteCond et des RewriteRule du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    RewriteCond "si le domaine est domaine1"
    RewriteRule ^images/(.*)$ images_domaine1/$1 [L]
     
    RewriteCond "si le domaine est domaine2"
    RewriteRule ^images/(.*)$ images_domaine2/$1 [L]
     
    ...
    Et tout-ça fonctionne parfaitement, que ce soit pour mes balises IMG ou mes backgrounds CSS.

    En revanche, voilà où réside mon problème : j'ai besoin de pouvoir générer des fichiers dans ces dossiers, avec PHP : fopen("images/liste.txt","w") Et là, ça coince, car "images/liste.txt" n'étant pas une URL ça n'est pas pris en compte par mes RewriteRule.
    Je vous solicite donc pour m'aider à trouver un moyen de faire une sorte de "path-rewriting" afin que "images/" soit considéré comme un alias paramétrable en fonction de l'URL.

    Il serait bien entendu possible de faire quelque chose comme : fopen("images".$suffixe."/liste.txt","w") avec $suffixe défini en fonction de l'URL au moyen d'un switch() ce qui fonctionnerait très bien. Malheureusement c'est exclu car mon projet tourne autour d'un gros CMS, et je ne peux pas me permettre de reprendre les milliers de lignes de code pour modifier tous les chemins d'accès.
    Il me faudrait une solution qui se paramètre dans le .htaccess ou le httpd.conf ou un script bash ou autre...(mon environnement : Apache-Linux en distant et Apache-Windows en local).

    Merci d'avance pour votre aide.

    David.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    C'est impossible car de toute façon le gestionnaire de flux HTTP ne gère pas l'écriture.

    N'est-il pas possible d'utiliser directement les variables comme $_SERVER['HTTP_HOST'] ? Sinon, peut être avec SetEnv (pour chaque VH ou à chaque racine) :
    Que l'on doit retrouver via $_SERVER['SUFFIXE'] en PHP. Mais ça revient à placer ce paramètre dans son fichier de configuration.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par julp Voir le message
    C'est impossible car de toute façon le gestionnaire de flux HTTP ne gère pas l'écriture.
    Bonjour Julp,

    Merci pour ta réponse.
    Les éléments que tu me proposes sont des variantes de ce que je ne peux pas faire : aller placer "$suffixe" dans chaque chemin au sein de 100 000 lignes de code du CMS.

    Je cherche plutôt une solution du genre : define("upload/","upload_domaine1")
    (ça, ça ne peux évidement pas marcher).
    Il faudrait un script PHP qui remplace dynamiquement lors de l'éxecution du CMS, mais je ne vois pas comment faire.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Sinon il faut monter un énorme bricolage relativement lourd :
    • créer un script resolve.php qui retourne son chemin (complet ou partiel) qui serait placé dans chaque répertoire images :
      Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
      <?php echo dirname(__FILE__); ?>
    • appeler ce fichier par HTTP donc pour récupérer ce chemin (le problème étant de reconstituer l'URL) :
      Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      <?php
      $https = isset($_SERVER['HTTPS']) && !strcasecmp($_SERVER['HTTPS'], 'on');
      $scheme = $https ? 'https://' : 'http://';
      $port = $https ? ($_SERVER['SERVER_PORT'] == 443 ? '' : ':' . $_SERVER['SERVER_PORT']) : ($_SERVER['SERVER_PORT'] == 80 ? '' : ':' . $_SERVER['SERVER_PORT']);
      $url = $scheme . $_SERVER['HTTP_HOST'] . $port . '/images/resolve.php';
      $real_path = file_get_contents($url);
      // Et pof (faudrait quand même gérer les potentielles erreurs ...)
      $fp = fopen($real_path . '/nouveauFichier.xml', 'w');
      // ...

    (non testé)

Discussions similaires

  1. Redirection 301 de pages non "rewrite" vers page "rewrite"
    Par lelectronique.com dans le forum Apache
    Réponses: 1
    Dernier message: 24/02/2013, 23h07
  2. trouver le host d'un URL à partir de path
    Par GoldenEyes dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 31/05/2009, 09h39
  3. parseur d'URL : url => ( host, port, path)
    Par Mokhtar BEN MESSAOUD dans le forum C
    Réponses: 3
    Dernier message: 10/03/2008, 20h42
  4. [URL Rewriting] problème de rewrite rule
    Par julien.63 dans le forum Apache
    Réponses: 1
    Dernier message: 30/10/2007, 13h38
  5. Récupérer l'url d'une page rewritée.
    Par psychoBob dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 03/02/2006, 00h28

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