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 :

[Ubuntu - Apache2] Mod_rewrite ne fonctionne pas


Sujet :

Apache

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut [Ubuntu - Apache2] Mod_rewrite ne fonctionne pas
    Bonsoir,

    Je suis entrain de déployé mon application sous vmware avec Ubuntu 14.4

    Pour le moment l'application fonctionne sous l'url : http://localhost/app02/index.xhtml

    j'ai ajouté le mode rewrite dans le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /etc/apache2/apache2.conf
    le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <ifModule mod_rewrite.c>
    RewriteEngine On
    </ifModule>
     
    <VirtualHost *:80>
            RewriteEngine On
            RewriteRule ^$ http://localhost/app02/index.xhtml  [L]
    </VirtualHost>
     
    <Directory "/chemin/vers/webroots">
    AllowOverride All
    </Directory>
    en esseyant de saisir http://localhost, j'ai la page de démarrage d'apache et non l'application.

    Quesque je dois ajouté ?

    Merci

  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
    Reviens en arrière sur ta modification de apache2.conf : avec Ubuntu, il faut utiliser des commandes spéciales pour activer des modules ou des hôtes virtuels. Dans ton cas, il faut utiliser la commande

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    J'ai executer cette commande avec un sudo lors de l'ajout du fichier 'so'

    Quad je le fais de nouveau j'ai ce message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Module rewrite already enabled

  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
    Parfait.

    Truc que je n'avais pas vu :

    Citation Envoyé par facilus68 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <VirtualHost *:80>
            RewriteEngine On
            RewriteRule ^$ http://localhost/app02/index.xhtml  [L]
    </VirtualHost>
    Le masque ^$ de la RewriteRule n'est possible que dans un .htaccess. Dans un bloc <VirtualHost> il faut mettre la vraie URL avec un / devant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^/$ http://localhost/app02/index.xhtml  [L]

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    En modifiant la regle avec l'ajout du '/', j'ai le meme souci (affichage de la page d'accueil d'apache)

    J'ai esseyé d'ajouter ceci à l'url :

    , ca donne cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Not Found
     
    The requested URL /index.xhtml was not found on this server.
    Apache/2.4.7 (Ubuntu) Server at localhost Port 80

  6. #6
    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
    Oui, parce que le hostname qui figure dans les URL n'est jamais vérifié par rapport au filtre des RewriteRule. Pour le reste, je n'ai pas d'explication. La seule option que je vois c'est activer les traces de mod_rewrite pour comprendre la logique d'analyse de l'URL par le module.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    Pour les logs en mod_rewrite j'ai ajoutée ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    LogLevel alert rewrite:trace3
     
    <Directory "/usr/local/apache/htdocs/app">
      LogLevel debug
    </Directory>
    mais rien n'est indiquée pour le fichier de log où le trouvé.

    apart celui qui se trouve dans le '/var/log/apache' y'a rien de particulier dedans

  8. #8
    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

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    voila ce ke j'ai dans les logs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [Sun Mar 01 15:27:34.573058 2015] [mpm_prefork:notice] [pid 6465] AH00169: caught SIGTERM, shutting down
    [Sun Mar 01 15:27:35.841584 2015] [mpm_prefork:notice] [pid 6525] AH00163: Apache/2.4.10 (Ubuntu) mod_jk/1.2.37 PHP/5.5.12-2ubuntu4.2 configured -- resuming normal operations
    [Sun Mar 01 15:27:35.841861 2015] [core:notice] [pid 6525] AH00094: Command line: '/usr/sbin/apache2'

  10. #10
    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
    Si je ne me trompe pas, ce que tu nous montres est un extrait de l'error_log standard d'Apache. mod_rewrite a son propre système et fichier de traces : c'est ce qu'il faut que tu utilises.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    Quand j'ajoute la commande RewriteLog j'ai une erreur lors d'un restart d'apache :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Invalid command 'RewriteLog', perhaps misspelled or defined by a module not included in the server configuration
    Action 'configtest' failed.
    The Apache error log may have more information.
    J'ai pris la dernière doc d'apache :

    http://httpd.apache.org/docs/current...d_rewrite.html

    Ils disent d'utiliser cette commande pour un fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tail -f error_log|fgrep '[rewrite:'
    Mais j'ai esseyé de placer cette commande dans le fichier de config, ca passe pas, dans le terminal pareil.....vraiment bloquer

  12. #12
    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
    C'est une commande à exécuter dans un terminal depuis le répertoire où se trouve le fichier error_log. Pour utiliser cette commande, il faut activer les traces pour mod_rewrite (voir ci-après) et avoir redémarré Apache.

    Pour les traces de mod_rewrite, si tu lis bien la doc, juste avant cette commande, il y a un exemple de paramétrage de LogLevel. C'est nécessaire de paramétrer cette directive, vu que RewriteLog n'existe plus dans ton cas, pour avoir des traces de debug. Qu'as-tu paramétré à ce niveau là ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    J'ai mis cette ligne dans la configuration d'apache :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LogLevel alert rewrite:trace3
    le repertoire des logs se trouve ici :

    /var/log/apache2

    quand j'execute cette commande dans ce repertoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tail -f error.log|fgrep '[rewrite:'
    le terminal reste bloquée et ne me redonne pas la main

  14. #14
    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
    C'est normal que tu ne récupères pas la main : tail est en attente de contenu sur le fichier error.log. Il faut alors tout simplement que tu testes ton site (1 seule fois) et voir ce qui s'affiche à l'écran. Si tu n'obtiens rien de probant, tu peux passer à trace4, puis trace5 s'il faut, etc.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    J'ai retester jusqu'au niveau 8 en relancant a chaque fois apache, en lancant la commande et en esseyant d'acceder au site rien ne s'affiche dans le terminal

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    J'ai ajouté cette directory dans la configuration d'apache :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <Directory /var/lib/tomcat7/webapps>
    	AllowOverride All
    	Require all granted
    	RewriteEngine On
    	RewriteBase /
    	LogLevel alert rewrite:trace6
    	RewriteRule ^/$  http://ip_du_vps/monapp/ [P,L]
    </Directory>
    c'est pareil, aucune redirection

    Sachant que j'ai un seul context pas plusieurs dans tomcat

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    Sort le LogLevel du bloc <Directory> : mets-le au plus haut niveau pour être sûr qu'il soit pris en compte par Apache.

    Que viens faire Tomcat dans la boucle ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    J'ai sortie de nouveau le LogLevel.

    A propos de Tomcat, j'ai utilisé le couplage entre Apache et Tomcat comme indiquée dans ce tutorial :

    http://zekey.developpez.com/tutoriel/apache/tomcat/

    Initialement l'application tourne sur Tomcat (webapps), la rediriger vers Apache

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    Pas tout compris : tu veux remplacer Tomcat par Apache ?

    Pourquoi avoir mis ta conf dans un bloc <Directory /var/lib/tomcat7/webapps> ? Ta réécriture ne s'appliquera que si Apache détermine que la requête doit être traitée par un fichier se trouvant dans le répertoire /var/lib/tomcat7/webapps. Donc soit tu as défini un alias qui pointe sur ce répertoire, soit c'est le document root d'Apache. Dans tous les autres cas, je doute que ta règle soit exécutée.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    En résumé voila ce que je veux faire :

    1- une application j2ee ne peux tournée sur Apache, elle doit etre dans un server d'application, web telque tomcat, pour cela, on y accede de cette maniere :

    localhost:8080/nom_de_appli

    2- je voudrais supprimer en premier lieu le port 8080 pour acceder à l'appli directement, pour cela, j'ai utilisé le tutorial de couplage apache et tomcat (cité haut) et sa marche

    3- ensuite je voudrais supprimer le context (nom de l'appli) de l'url, pour ensuite mettre un nom de domaine, et dans cette etape que ca bloque.

    Maintenant je bloque sur cette histoire de redirection d'apache, je sais pas que dois-je ajouté ou enlever.

    J'ai modifié la configuration comme ceci mais sa fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <virtualhost *:80>
    RewriteEngine On
    DocumentRoot "/var/lib/tomcat7/webapps"
    ServerName ip_du_vps # j'ai supprimer celle la
    RewriteRule ^/$  http://ip_du_vps/monapp/ [P,L]
    </virtualhost>

Discussions similaires

  1. Enregistreur de sons sur Ubuntu 14.10 ne fonctionne pas.
    Par joleperemaudit dans le forum Linux
    Réponses: 2
    Dernier message: 17/12/2014, 23h10
  2. mod_rewrite ne fonctionne pas
    Par stc074 dans le forum Apache
    Réponses: 4
    Dernier message: 25/09/2012, 22h30
  3. mod_rewrite ne fonctionne pas sur mon serveur
    Par lsamourail dans le forum Apache
    Réponses: 2
    Dernier message: 13/01/2008, 13h55
  4. Réponses: 1
    Dernier message: 25/01/2007, 18h19
  5. [UBUNTU] Le php ne fonctionne pas
    Par zuxion dans le forum Ubuntu
    Réponses: 29
    Dernier message: 07/06/2006, 18h48

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