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 :

Problème avec mod_rewrite


Sujet :

Apache

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 51
    Points
    51
    Par défaut Problème avec mod_rewrite
    Bonjour!

    Voilà, j'ai un problème avec mod_rewrite, ma config ne fonctionne pas et je ne comprends pas pourquoi!

    J'ai suivi ce tuto http://zekey.developpez.com/tutoriel/apache/tomcat/ , et quand j'arrive au point V du mod_rewrite, ma config ne fonctionne plus.

    Voici la situation, j'ai une appli "IrisManager" déployée sur un serveur tomcat 7.0.34 qui fonctionne bien et est accessible par http://localhost:8080/IrisManager/ (pour l'instant normal). Je suis sous windows xp pour mes tests

    En ajoutant la config suivante dans httpd.conf de mon serveur apache 2.2, ca fonctionne aussi avec http://localhost/IrisManager/

    httpd.conf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    LoadModule jk_module modules/mod_jk.so
     
    #
    # Mod_jk settings
    #
       JkWorkersFile "C:/Apache2.2/conf/worker.properties"
       JkLogFile "C:/Apache2.2/logs/mod_jk.log"
       JkLogLevel info
       JkMount /IrisManager monworker
       JkMount /IrisManager/* monworker
    # End of mod_jk settings
    worker.properties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ps=\
    worker.list=monworker
    worker.monworker.port=8009
    worker.monworker.host=127.0.0.1
    worker.monworker.type=ajp13
    Mais c'est maintenant que ca se gâte, au moment de la config du mod_rewrite. Si je suis le tuto, je dois ajouter ce code dans mon httpd.conf :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <VirtualHost *:80>
            RewriteEngine On
            RewriteRule ^$ http://localhost/IrisManager  [L]
    </VirtualHost>
    Mais après redémarrage de mon apache, l'url http://localhost/IrisManager/ me dit "not found" et l'url http://localhost/ me dit "It works", qui est le message par défaut de apache

    Je comprends pas et ca fait 1 jour que je me prends la tete avec ca, qu'est-ce que j'ai fait de faux?

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 51
    Points
    51
    Par défaut
    Please?

    Personne pour aider?

    Est ce que qqun pourrait juste me confirmer mes commentaires :


    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
     
    #lancement du module jk
    LoadModule jk_module modules/mod_jk.so
    #fichier de config + logs
    JkWorkersFile "C:/Apache2.2/conf/worker.properties"
    JkLogFile "C:/Apache2.2/logs/mod_jk.log"
    JkLogLevel info
    #redirection de ce qui contient "/IrisManager" dans mon worker -> tomcat:8009
    JkMount /IrisManager monworker
    JkMount /IrisManager/* monworker
     
     
    <VirtualHost *:80>
    #activation du rewrite engine
    RewriteEngine On
    #règle de réécriture : tout ce qui entre, renvoyer sur http://localhost/IrisManager
    RewriteRule ^$ http://localhost/IrisManager  [L]
    </VirtualHost>

  3. #3
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Dans ton httpd.conf, tu avais logiquelent déjà une section <VirtualHost *:80>
    Tu as bien ajouté la conf rewriteRule dans ce virtualHost éxistant ?

    Tu as bien la ligne de chargement du module mod_rewrite décommentée dans ton http.conf ?

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 51
    Points
    51
    Par défaut
    J'ai finalement changé de méthode, j'ai compris trop tard que le module rewrite n'était pas ce que je recherchais pour mon projet.

    Alors là je suis parti sur le mod_proxy et ca fait ce que je veux, ou presque. Ma config est la suivante (et non je n'avais pas déjà une section <Virtualhost *.80>)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <VirtualHost _default_:80>
      ProxyPreserveHost On
      ProxyPass /IrisManager http://localhost:8080/IrisManager
      ProxyPassReverse /IrisManager http://localhost:8080/IrisManager
    </VirtualHost>
    Maintenant je me pose encore la question de comment faire une fois que mon serveur httpd sera sur son serveur final en prod (intranet) et que les utilisateurs voudront l'interroger, je ne peux quand meme pas leur dire de taper http://<nom serveur>/IrisManager, mais simplement http://<nom serveur>... comment faire dans ce cas?

    C'est justement pour ce cas que je voudrais faire qqch comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ProxyPass / http://localhost:8080/IrisManager
    ProxyPassReverse / http://localhost:8080/IrisManager
    Mais selon mes tests ceci renvoie sur la page d'accueil de apache httpd avec le message "It works"

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 51
    Points
    51
    Par défaut
    Bon, j'ai le sentiment de ma rapprocher de la solution désirée (en plus d'avoir le sentiment de faire un monologue )

    Avec cette config, ca fonctionne très bien en local, l'url est réécrite en <nom machine>/IrisManager et j'arrive sur ma page d'accueil

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <VirtualHost _default_:80>
      RewriteEngine On
      RewriteRule ^/$ http://<nom machine>/IrisManager
      #ici, ce qui arrive sur "<nom machine>/" est réécrit en <nom machine>/IrisManager
      # et <nom machine>/IrisManager et envoyé sur tomcat (proxy)
     
      #Conserver le nom d'hôte d'origine dans la requête
      ProxyPreserveHost On
     
      ProxyPass /IrisManager http://<nom machine>:8080/IrisManager
      ProxyPassReverse /IrisManager http://<nom machine>:8080/IrisManager
    </VirtualHost>
    Mais si je me connecte depuis une autre machine et que je fais http://<nom machine>/, il me trouve rien.

    Est-ce qu'on pourrait m'expliquer? Je suis largué là...

  6. #6
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    T'as changé de module mais pas de méthode en fait.

    Ce que tu fais avec mod_proxy, tu le faisais avec mod_jk....
    La différence est que l'un travaille en http et l'autre en ajp....

    Tu en reviens donc à modifier avec mod_rewrite ton url... Comme dans ton premier post....

    Ajoute un / à la fin de la cible du proxypass. J'utilise un paramétrage similaire sur un de mes sites.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProxyPass / http://localhost:8080/IrisManager/
    ProxyPassReverse / http://localhost:8080/IrisManager/

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 51
    Points
    51
    Par défaut
    Oui je sais que j'ai changé de module mais pas de manière, je me suis dit que pour faire la meme chose c'était mieux d'avoir 2 lignes dans mon httpd.conf plutot que 7 ou 8, en plus du fichier worker.

    Bref, ca ne fonctionne toujours pas, mais ca m'a l'air assez logique :

    localhost/ me renvoie bien sur le index.jsp de mon appli (qui est une page de login) mais après mon login, mon appli envoie l'utilisateur sur la page /IrisManager/caisses.jsp et là tomcat me dit :

    /IrisManager/IrisManager/caisses.jsp ressource indisponible.

    Mais c'est normal, /IrisManager/IrisManager ne peut pas exister!

    Est-ce que c'est dû au ProxyPass / ?

    Ce que je ne comprends vraiment pas, c'est que si je passe directement par tomcat, tout fonctionne correctement et j'arrive bien sur ma page http://localhost:8080/IrisManager/caisses.jsp sans problème.

    Mais pas en passant par apache...

  8. #8
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Dans le code html de ton appli, tu dois avoir des liens (destination de formulaire ou autre) qui pointent vers irisManager/...

    Or dans la construction de tes pages, tu ne dois pas avoir de référence à ce morceau d'url.

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par Marc3001 Voir le message
    Dans le code html de ton appli, tu dois avoir des liens (destination de formulaire ou autre) qui pointent vers irisManager/...

    Or dans la construction de tes pages, tu ne dois pas avoir de référence à ce morceau d'url.
    Pas du tout, en l'occurence, le code incriminé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.sendRedirect("caisses.jsp");
    D'ailleurs ce code fonctionne très bien quand je suis sur tomcat

  10. #10
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Citation Envoyé par Sebeee Voir le message
    localhost/ me renvoie bien sur le index.jsp de mon appli (qui est une page de login) mais après mon login, mon appli envoie l'utilisateur sur la page /IrisManager/caisses.jsp
    C'est bien que :
    - soit tu as du irisManager dans tes liens ou cibles de formulaires dans ton code html
    - soit dans ton appli java, tu ajoutes ce morceau d'url (/irisManager)....

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par Marc3001 Voir le message
    C'est bien que :
    - soit tu as du irisManager dans tes liens ou cibles de formulaires dans ton code html
    - soit dans ton appli java, tu ajoutes ce morceau d'url (/irisManager)....
    Non et je te le confirme, mon code ne fait aucune référence à /IrisManager. Je sais qu'il ne faut pas le faire alors je ne l'ai pas fait

  12. #12
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Vérifie via firebug (onglet réseau) la réponse de redirection du serveur.
    Vérifie le champs location dans l'en-tête qui va contenir la cible de la redirection.

Discussions similaires

  1. Problème avec mod_rewrite
    Par Joebarboat dans le forum Apache
    Réponses: 2
    Dernier message: 24/01/2012, 21h11
  2. Réponses: 14
    Dernier message: 23/05/2010, 12h49
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 19h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 17h10

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