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 :

rewrite et virtualhost


Sujet :

Apache

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut rewrite et virtualhost
    Bonjour à tous,

    J'ai un site qui héberge plusieurs développeurs PHP indépendants.
    Les URL sont du genre:
    http://serveur.dom.be/nomsite1
    http://serveur.dom.be/nomsite2

    J'utilise suexec et mod_userdir pour que chacun tourne son php independamment.

    pour que les adresses ne contiennent pas de ~login1 , ~login2,... j'utilise du rewriting dans httpd.conf:

    RewriteRule ^/nomsite1/(.*) /\~login1/$1 [PT]
    RewriteRule ^/nomsite1/(.*) /\~login2/$1 [PT]

    Je désire désactiver mod_userdir et plutôt utiliser des virtualhosts (adresses "internes" nomsite1.dom.be). Seulement j'aimerais que les URL extérieurs soient toujours les anciennes.

    J'ai essayé de changer le rewrite en:

    RewriteRule ^/nomsite1/(.*) http://nomsite1.dom.be/$1 [PT]

    Malheureusement, il semble que Apache force un redirect (extrait du rewrite_log)
    (2) rewrite '/nomsite1/test.php' -> 'http://nomsite1.dom.be/test.php'
    (2) implicitly forcing redirect (rc=302) with http://nomsite1.dom.be/test.php
    (2) forcing 'http://nomsite1.dom.be/test.php' to get passed through to next API URI-to-filename handler

    Le navigateur reçoit l'erreur "Bad Request Your browser sent a request that this server could not understand."

    Lorsque j'enlève l'option "[PT]" le serveur renvoit une redirection au navigateur vers http://nomsite1.dom.be/test.php

    c'est comme si le rewrite est réalisé à un moment où le choix du virtualhost à déjà été fait par apache et ne peut être changé (sauf par une redirection).
    Y-a-t-il moyen de faire un rewrite de l'adresse entrante avant que le choix du virtualhost soit irreversible?

    Dans la doc de apache httpd2.2 on parle de "filtres" qui semblent se placer avant tout processing. Peut-on utiliser mod_rewrite à ce niveau et comment?

    Merci d'avance.

    Emilou

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut
    Je désire désactiver mod_userdir et plutôt utiliser des virtualhosts (adresses "internes" nomsite1.dom.be). Seulement j'aimerais que les URL extérieurs soient toujours les anciennes.
    Vu ce que tu souhaites faire, pourquoi n'utilises-tu pas plutôt des alias ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Taum
    Salut

    Vu ce que tu souhaites faire, pourquoi n'utilises-tu pas plutôt des alias ?
    ?je comprend pas comment?

    A un moment, il faut que la requête GET http://serveur.dom.be/nomsite1/test.php soit envoyé sur le virtualhost nomsite1.dom.be qui lui utilise suexec pour faire tourner php en tant que l'utilisateur login1.

    Comment faire ca avec des Alias?

    Emilou

  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
    J'ai pas du tout compris le besoin : c'est quoi l'intérêt de vouloir utiliser des virtual hosts si c'est pour conserver les anciennes URL qui n'utilisent pas les virtual hosts ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par _Mac_
    J'ai pas du tout compris le besoin : c'est quoi l'intérêt de vouloir utiliser des virtual hosts si c'est pour conserver les anciennes URL qui n'utilisent pas les virtual hosts ?
    Il y a deux interets pour moi:
    -utiliser la directive "SuexecUserGroup" (module suexec) qui permet de faire tourner une partie de site (application) de manière cloisonnée tout en autorisant pas tous le utilisateurs à mettre du php.
    -permettre de générer un access_log et un error_log individuel par sous-site à la volée.
    Et le tout en gardant l'apparence d'un seul serveur.

    Je sais que c'est un peu tordu, mais je tiens à préserver l'apparence de l'ancienne config, qui limitera (à mon avis) les problèmes de compatibilité des dizaines d'applications PHP instalées sur lesquelles je n'ai aucun contrôle.

    Merci de votre interêt.

    Emilou

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Ok effectivement si tu veux utiliser des directives pour séparer les fichiers de logs et autre (je ne connais pas du tout suexec ), il semble que ça ne soit pas possible avec Alias

    Cependant en fouillant dans la doc d'apache, je me suis souvenu de quelque chose qui pourrait surement t'interesser : la directive ServerPath des virtualhosts.

    voir : http://httpd.apache.org/docs/2.2/vhosts/name-based.html (bas de la page)
    Bien que la page parle de navigateur obsolète, elle propose une solution pour acceder au virtualhost via :
    http://nom.com/dossier/

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci pour ta réponse Taum,

    J'ai essayé, mais il semble que la directive ServerPath à pour but d'autoriser simultanément les urls http://site1.dom.com/ et http://site1.dom.com/site1/

    Et donc ca reroute pas les urls http://www.dom.com/site1 vers le virtualhost.

    Sinon j'avais pensé faire un truc avec mod_proxy, mais là les adresses IP sont faussées dans les logs.

    La seule porte qui me semble ouverte est celle des filtres au niveau de l'input. Dans la doc ils mettent un schéma qui semble montrer que les filtres sont activés avant tout autre processing de Apache.
    Le problème est que ca à l'air vachement compliqué, et je crains qu'il faille développer le filtre en C. Je me demandais si mod_rewrite pourrait être utilisé comme filtre?!

    Emilou

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    J'essayerais ce soir pour le ServerPath, mais au vu de la doc, je pensais que la directive serait utilisée si aucun vhost ne correspondait

    Quant aux filtres je n'ai aucune idée de leur utilisation, désolé

  9. #9
    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 emilou
    Sinon j'avais pensé faire un truc avec mod_proxy, mais là les adresses IP sont faussées dans les logs.
    Non, faut simplement loguer la valeur de l'entête HTTP X-Forwarded-For ou un autre du genre à la place du champ host standard.

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Hum effectivement je viens de voir que le ServerPath n'est pris en compte que si le client n'envoie pas d'entête Host:
    Désolé, j'aurais essayé

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par _Mac_
    Non, faut simplement loguer la valeur de l'entête HTTP X-Forwarded-For ou un autre du genre à la place du champ host standard.
    Merci Mac, J'ai même trouvé un module 'mod_rpaf' ( http://stderr.net/apache/rpaf/ ) qui fait tout automatiquement (y compris adapter la variable d'environnement REMOTE_ADDR). Vraiment pratique.

    J'ai essayé de creuser du côté de mod_ext_filter en mode input, mais là je n'y ai rien compris: j'ai jamais reçu la requete GET http://.... HTTP/1.1 ..... dans le standard input de mon filtre. Je pense que ces filtres ne peuvent gérer que le contenu, pas les headers de la requête.

    Merci à tous pour votre aide.

    Emilou

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

Discussions similaires

  1. URL rewritting vers HTTPS sauf pour 1 virtualhost
    Par grepillez dans le forum Apache
    Réponses: 1
    Dernier message: 14/11/2013, 17h16
  2. [Wamp] Url rewriting et virtualhost
    Par xess91 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 11
    Dernier message: 25/06/2011, 12h42
  3. Problème VirtualHost + Alias + URL Rewriting
    Par Phara dans le forum Apache
    Réponses: 5
    Dernier message: 02/11/2009, 11h12
  4. [ZF 1.8] htaccess, virtualhost et rewriting
    Par Shirraz dans le forum Zend Framework
    Réponses: 5
    Dernier message: 14/05/2009, 18h01
  5. [Débutant]infos ds session sans cookie ? url rewriting ?
    Par Satanas_et_diabolo dans le forum ASP
    Réponses: 8
    Dernier message: 10/10/2006, 18h13

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