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 :

RewriteRules dans .htaccess ou configuration principale ?


Sujet :

Apache

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 76
    Points
    76
    Par défaut RewriteRules dans .htaccess ou configuration principale ?
    Bonjour,

    Mon objectif me semble simple : rediriger un page vers une autre !

    J'ai, dans un répertoire repertoire, une page index.html et une page test.html.
    Je voudrais, à l'ai de de RewriteRules récrite mon url www.monsite.fr:9080/repertoire/ pour afficher le contenu de test.html

    pour cela je tente d'écrire mes RewriteRules dans mon virtual Host:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <VirtualHost *:9080>
        RewriteEngine on
        RewriteRule ^index\.html$  test.html [L]
    </VirtualHost>
    Seulement ca ne fonctionne pas...

    Après plusieurs recherche, j'ai fini par créer un fichier .htacces dans mon répertoire repertoire avec STRICTEMENT les même directive.
    Dans ce cas là, cela fonctionne.

    Cela signifie t'il que toutes mes RewriteRules doivent être dans mon fichier .htaccess (ce qui me gêne...) ?
    Comment je peux déporter mes RewriteRules dans mon fichier de config apache (VirtualHost, Location, etc...) ?
    Suis je obliger d'avoir des .htaccess dans chacun de mes répertoire pour utiliser les RewriteRules ?

    MErci d'avance pour toutes ces réponse !

  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
    Citation Envoyé par Arcann Voir le message
    Cela signifie t'il que toutes mes RewriteRules doivent être dans mon fichier .htaccess (ce qui me gêne...) ?
    Non

    Citation Envoyé par Arcann Voir le message
    Comment je peux déporter mes RewriteRules dans mon fichier de config apache (VirtualHost, Location, etc...) ?
    Il y a 2 choses à retenir pour les RewriteXxx dans la conf principale d'Apache :
    • On travaille sur tout le chemin de l'URL
    • Ce chemin de l'URL commence par un /

    Donc, vu que tu voulais réécrire www.monsite.fr:9080/repertoire/, ton RewriteRule aurait dû être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^/repertoire/index\.html$ ...
    et pas seulement ^index\.html$ qui ne s'applique quand dans le .htaccess du répertoire repertoire.

    Donc, pour passer du .htaccess à la conf principale, il faut reconstruire les URL complètes et les faire commencer par un /, ce qui n'est pas le cas pour les .htaccess (le / étant implicite).

    Citation Envoyé par Arcann Voir le message
    Suis je obliger d'avoir des .htaccess dans chacun de mes répertoire pour utiliser les RewriteRules ?
    Non, c'est toi qui vois si c'est préférable de faire des .htaccess ou des trucs dans ton VH. Les .htaccess ont ceci d'intéressant : il n'est pas nécessaire de redémarrer Apache pour que les modifs faites sur les .htaccess soient prises en compte ; si tu fais une modif dans un fichier de conf (httpd.conf par exemple), il faut redémarrer Apache pour que la modif soit prise en comte, ce qui peut être gênant.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 76
    Points
    76
    Par défaut
    Merci beaucoup pour ce coup de main, ca me plait beaucoup mieux...

    Mais comme tout bon débutant qui se respecte, j'ai de nouveau des ennuies!

    Les rewriteRules peuvent elles me permettre de convertir une adresse http://mon.site.com/test en http://mon.site.com:8080/test sans changer l'url dans le navigateur ?

    J'ai fais plusieurs essais, mais à chaque fois, l'url est modifiée dans le navigateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        RewriteEngine on
        RewriteCond %{REMOTE_PORT}  ^80$
        RewriteRule ^/(.*)  http://mon.site.com:8085/redirect.html [L]
    Encore une erreur de syntaxe ?
    Peut etre que ce n'est pas l'objectif des RewriteRules ?

    Merci de votre aide !

  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
    C'est normal que l'URL soit modifiée dans le navigateur car lorsque le second membre d'un RewriteRule est http://... et que cette nouvelle URL n'est pas une URL correspondant au VH courant, il y a redirection du navigateur et non pas réécriture interne (transparente pour le navigateur).

    Ca dépend de ce que tu veux vraiment faire. En toute logique, ne plus avoir le port qui figure dans l'URL signifie que le serveur écoute sur le port 80. Il faut donc que ton serveur Apache écoute sur le port 80. Si ce n'est pas le cas, c'est la première chose à faire. Ensuite, si tu veux effectivement rediriger, sans que le navigateur le voit, le port 80 en 8080, tu peux le faire avec mod_proxy mais honnêtement je n'en vois absolument pas l'intérêt si c'est pour pointer sur le même serveur Apache. Je suggère fortement de passer tout ton VH sur le port 80 et comme ça, plus rien d'autre à faire.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 76
    Points
    76
    Par défaut
    Je faisait une mauvaise utilisation des RewriteRules ...

    En fait ce n'est pas pour pointer vers le même apache, mais pour pointer vers des serveur tomcat différents... mais du coup on sort un peu du sujet de base...

    Explications et solutions :
    Deux noms de domaines pointent vers le même serveur (Apache).
    En fonction du nom de domaine utilisé (définit par des <VirtualHost>) je souhaitais pointer vers un tomcat différent et pour cela utiliser les RewriteRules...
    Mais le fonctionnement le plus adéquat est de paramétrer le mod_jk du serveur apache comme indiqué dans ce très bon tutoriel : http://zekey.developpez.com/tutoriel/apache/tomcat/

    et Hop, le trou est joué !

    J'ai cependant encore des paramétrage à faire, dont du rewriting, donc je pense que je vais revenir vous voir...

    Merci de l'aide !


    Edit :
    Tu écrit :
    C'est normal que l'URL soit modifiée dans le navigateur car lorsque le second membre d'un RewriteRule est http://... et que cette nouvelle URL n'est pas une URL correspondant au VH courant, il y a redirection du navigateur et non pas réécriture interne (transparente pour le navigateur)
    Est ce que cela signifie que si dans ma règle j'enlève le http:// et que mon host est mon.site.com ma Rewrite est transparente ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        RewriteEngine on
        RewriteCond %{REMOTE_PORT}  ^80$
        RewriteRule ^/(.*)  mon.site.com:8085/redirect.html [L]

  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
    Citation Envoyé par Arcann Voir le message
    Est ce que cela signifie que si dans ma règle j'enlève le http:// et que mon host est mon.site.com ma Rewrite est transparente ?
    Ca serait trop beau !! Bien sûr que non. En gros, si le second membre du REwriteRule commence par http://... tu auras une redirection du navigateur (sauf dans le cas où Apache arrive à deviner que ce http://... est en fait le même VH que celui sur lequel tu te trouves), sinon, c'est une réécriture interne dans laquelle le http:// par lequel tu arrives est repris. Pour reprendre ton exemple, si tu es arrivé sur Apache et ce .htaccess avec http://titi.com/toto/, la réécriture sera équivalente à http://titi.com/toto/mon.site.com:8085/redirect.html.

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

Discussions similaires

  1. Préciser version php dans .htaccess
    Par azertyman dans le forum Apache
    Réponses: 7
    Dernier message: 06/11/2007, 19h47
  2. [FTP] Serveur SMTP dans php.ini configuration
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 10/10/2006, 18h58
  3. A quoi sert "AuthGroupFile" dans .htaccess ?
    Par Christophe Charron dans le forum Apache
    Réponses: 4
    Dernier message: 14/09/2006, 15h59
  4. Redirect Permanent dans Htaccess
    Par murrigane dans le forum Apache
    Réponses: 6
    Dernier message: 30/06/2006, 14h39
  5. Réponses: 1
    Dernier message: 06/11/2005, 17h16

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