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] Tomcat


Sujet :

Apache

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Par défaut [URL Rewriting] Tomcat
    Bonjour,

    J'ai suivi ce tuto : http://zekey.developpez.com/tutoriel/apache/tomcat/

    Tout va bien jusqu'au paragraphe 5.

    Si je teste http://localhost, Apache m'indique :

    [Thu Apr 19 00:07:37 2007] [error] [client 127.0.0.1] File does not exist: D:/Apache2.2/htdocs/personnes01


    personnes01 est une apps web et fonctionne très bien quand j'utilise http://localhost/personnes-01

    Note : j'ai laissé localhost car mon apache et mon tomcat son sur la même machine (et je n'utilise pas de hostname).

    Voyez-vous un bug dans ce tuto ou ai-je raté quelquechose ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Par défaut
    Ca me donne ce bug :

    http://localhost/personnes-01/person.../personnes-01/

    Ca répète personnes-01 comme s'il y avait un bug.

    Je me demande si cela ne vient pas de mon WebApp et plus particulièrement de mon index.jsp dont voici le contenu :

    <%@ page language="java" pageEncoding="ISO-8859-1" contentType="text/html;charset=ISO-8859-1"%>
    <%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>

    <c:redirect url="/do/list"/>

    Mais ça m'étonne vue la log d'Apache et que ça marche très bien sur http://localhost/personnes-01

    Firefox m'indique ceci :

    Redirection de page incorrecte

    Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas.

    * La cause de ce problème peut être la désactivation ou le refus
    des cookies.

    Logs Apache :

    Code X : 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
    19
    20
    21
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET / HTTP/1.1" 302 214
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/ HTTP/1.1" 302 227
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/ HTTP/1.1" 302 240
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 253
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 266
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 279
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 292
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 305
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 318
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 331
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 344
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 357
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 370
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 383
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 396
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 409
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 422
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 435
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 448
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 461
    127.0.0.1 - - [23/Apr/2007:22:25:34 +0200] "GET /personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/personnes-01/ HTTP/1.1" 302 474

  3. #3
    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
    Tu peux nous donner tes commandes de réécriture (RewriteCond, RewriteRule, etc.) ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Par défaut
    <VirtualHost *:80>
    RewriteEngine On
    RewriteRule ^(.*)$ http://localhost/personnes-01$1 [L]
    </VirtualHost>

    J'utilise la version 2.2.4 d'Apache.

  5. #5
    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
    C'est trop permissif, ça réécrit tout. Si le besoin c'est uniquement de rediriger http://localhost vers ce qui va bien, faut rajouter une condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/$
    RewriteRule ^(.*)$ http://localhost/personnes-01$1 [L]
    </VirtualHost>

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Par défaut
    Résultat :

    Quand je tape http://localhost, ça me redirige automatiquement vers http://localhost/personnes-01/do/list.

    C'est parfait !

    Maintenant, je souhaiterais une petite amélioration :

    Quand je tape http://localhost, ça me redirige automatiquement vers http://localhost/do/list. En gros, que ça me masque le nom de mon application web (ou encore, on peut dire que ça rend ce nom transparent pour l'utilisateur).

  7. #7
    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
    On doit pouvoir tout faire en une fois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/personnes-01
    RewriteRule ^(.*)$ http://localhost/personnes-01$1 [L]
    </VirtualHost>
    Ca veut dire "réécrit toutes les URL qui ne commencent pas par /personnes-01". Ca devrait donc convenir mais du coup, ça va renvoyer toutes les URL vers personnes-01. Si c'est pas le comportement attendu, par exemple si tu veux que l'URL http://localhost/titi/toto.jpg soit autorisée et non redirigée vers http://localhost/personnes-01/titi/toto.jpg, il va falloir cascader les RewriteCond pour mettre des règles d'exclusion.

    Le souci, c'est que les liens de tes pages peuvent contenir des personnes-01 et là y a pas de solution magique que d'éditer les liens un par un et de virer le personnes-01.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Par défaut
    Je pense que l'on s'est mal compris.

    Ce dont je dispose :
    - Apache
    - Tomcat (héberge une webapp nommée personnes-01)

    J'ai gardé la configuration de ton précédent post.

    Quand je tape http://localhost, je tombe sur http://localhost/personnes-01/do/lis...5E78441B3C7A21

    -> Donc au niveau de la réécriture pour la redirection, ça marche.

    Ce que je désire maintenant, c'est :

    Quand je tape http://localhost, je tombe sur http://localhost/do/list;jsessionid=...5E78441B3C7A21.

    En gros, que le nom de la WebApp hébergée sur Tomcat soit transparent. Sachant bien entendu que Tomcar n'hébergera que cette application (en production).

    Merci d'avance,

  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
    Par défaut
    Déjà, on peut faire un peu de nettoyage dans la conf Apache :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/personnes-01
    RewriteRule ^(.*)$ /personnes-01$1 [L]
    </VirtualHost>
    Vire simplement le "http://localhost" dans le RewriteRule. Je ne pense pas que ça ait un rapport avec ton pb, mais on ne sait jamais, ça évitera les confusions.

    Dans ce que tu dis, ce que je ne comprends pas c'est "Quand je tape http://localhost, je tombe sur http://localhost/personnes-01/do/lis...5E78441B3C7A21" : ton navigateur est redirigé vers cette URL, c'est ça ? Comment ça se fait ? Logiquement, la directive Apache "RewriteRule ^(.*)$ http://localhost/personnes-01$1 [L]" ne fait pas de redirection côté client : c'est de la réécriture interne qui permet de calculer une nouvelle URL finale à traiter.

    Si ton navigateur est redirigé vers http://localhost/personnes-01/do/list... quand tu tapes juste http://localhost/, il faut voir du côté de Tomcat et/ou des servlets pour comprendre pourquoi l'URL finale http://localhost/personnes-01 fait une redirection client vers http://localhost/personnes-01/do/list... car c'est ce qu'il se passe, en fait. Et là, je ne connais pas suffisamment Tomcat pour te dire d'où ça peut venir. Le soucis, c'est que si c'est bien Tomcat qui est en cause, je ne vois pas comment l'empêcher de faire ça. A moins que :
    1. Installe un sniffer du style LiveHTTPHeaders dans Firefox
    2. Lance le sniffer
    3. Accède à l'URL http://localhost
    La trace du sniffer te donnera l'URL exacte de la redirection qui est faite par le navigateur. Si c'est déjà http://localhost/personnes-01/do/list..., c'est perdu et je ne peux plus t'aider. Si c'est autre chose, dis nous ce que c'est, on avisera.

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Effectivement je me suis rendu compte que le Tuto est trop permissif donc ca ne marche sans la condition

    Maintenant comment fait-on pour que la page soit rediriger mais que l'utilisateur ne s'en rende pas compte car actuellement il le fait cote serveur et client. Je voudrais qu'il le fasse que coté server et que le client continu a voir la meme URL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/personnes-01
    RewriteRule ^(.*)$ http://localhost/personnes-01$1 [L]
    </VirtualHost>

  11. #11
    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
    Si ça redirige côté client, c'est à cause du http:// dans ta RewriteRule : mets juste RewriteRule ^(.*)$ /personnes-01$1 [L].

  12. #12
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    J'ai essayé sans le http il me renvoie un 404.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/personnes-01
    RewriteRule ^(.*)$ /personnes-01$1 [L]
    </VirtualHost>

  13. #13
    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
    Ah... Les logs Apache disent quelque chose d'utile ? Tu devrais y trouver exactement le fichier qu'il ne trouve pas.

  14. #14
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    On dirait qu'il essaye de rechercher le fichier du coté apache au lieu de chercher du coté de Tomcat.

    File does not exist: /htdocs

  15. #15
    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
    Plutôt étrange... Ca donne quoi si tu mets la directive de montage de Tomcat dans ton Virtual Host ?

  16. #16
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Ben en faite, il etait deja configurer avec le Jkmount

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <VirtualHost *>
            serverName www.server.com
            JkMount /capa default
            JkMount /capa/* default
            RewriteEngine On
            RewriteCond %{REQUEST_URI} !^/capa.*
            #RewriteRule ^(.*)$ http://www.server.com/capa$1 [L]
            RewriteRule ^(.*)$ /capa$1 [L]
    </VirtualHost>

  17. #17
    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
    T'as essayé de changer l'ordre pour voir ? De mettre les JkMount après le RewriteRule ?

  18. #18
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Oui j'ai essayé mais j'ai vraiment l'impression que Tomcat n'est pas interrogé si je ne mets pas l'URL au complet, j'ai l'impression que la requete reste au niveau d'apache.

    En faite je suis sur que ton conseil marcherait a merveille dans un environnement full apache mais le pont avec tomcat peut etre problematique.

  19. #19
    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
    Vire le [L], pour voir

  20. #20
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Ca ne marche pas plus a mon avis tomct ne peut se passer du http://

Discussions similaires

  1. url rewriting Apache tomcat javascript liferay
    Par alpha13fr dans le forum Apache
    Réponses: 3
    Dernier message: 15/08/2008, 13h39
  2. [Apache/Tomcat] Configurer url rewriting
    Par bizet dans le forum Apache
    Réponses: 4
    Dernier message: 10/04/2008, 16h33
  3. url rewriting avec tomcat en standalone
    Par julien20vt dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 18/01/2008, 13h59
  4. url rewriting tomcat
    Par abanote dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 12/11/2007, 14h20
  5. Couplage Apache HTTP & Tomcat - Url Rewriting
    Par Invité dans le forum Apache
    Réponses: 12
    Dernier message: 30/05/2007, 17h55

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