Boucle infinie...

Discussion dans 'URL Rewriting et .htaccess' créé par deweerdt, 11 Juin 2004.

  1. deweerdt

    deweerdt WRInaute impliqué

    Inscrit:
    12 Août 2003
    Messages:
    909
    J'aime reçus:
    0
    Voilà, j'ai un petit problème, j'amerais que lorsque l'on tape ww.monsite.com/modules.php?name=Variable, le visiteur soit redirigé 301 vers ww.monsite.com/mots-cles.html, ça marche très bien mais mots-cles.html est lui même rewrité vers modules.php?name=Variable donc concretement, je voudrais que lorsque l'n tape ww.monsite.com/modules.php?name=Variable on soit redirigié 301 vers ww.monsite.com/mots-cles.html et que cette page affiche le contenu de ww.monsite.com/modules.php?name=Variable sans être indéfiniment redirigé. Voilà ce que j'ai mis dans mon htaccess :
    Code:
    RewriteRule ^mots-cles.html$ modules.php?name=Variable [L]
    RewriteCond %{REQUEST_URI} ^/modules.php$
    RewriteCond %{QUERY_STRING} ^name=Variable$
    RewriteRule ^.* /mots-cles.html [R=301,L]
     
  2. nikoshr

    nikoshr WRInaute occasionnel

    Inscrit:
    10 Juillet 2003
    Messages:
    320
    J'aime reçus:
    0
    Trois solutions :
    - mettre les règles dans un httpd.conf
    - changer le nom du fichier php
    - adapter la condition pour qu'elle fonctionne avec THE_REQUEST plutôt qu'avec REQUEST_URI, voir http://www.webrankinfo.com/forums/topic_next_1226.htm pour un peu plus d'explications, la version longue se trouvant dans la doc Apache
     
  3. deweerdt

    deweerdt WRInaute impliqué

    Inscrit:
    12 Août 2003
    Messages:
    909
    J'aime reçus:
    0
    Je vais essayer avec THE_REQUEST, merci beaucoup pour ta réponse, en fait au bout de 2h sur la doc d'apache j'ai craqué et posté un message sur ce forum.
     
  4. deweerdt

    deweerdt WRInaute impliqué

    Inscrit:
    12 Août 2003
    Messages:
    909
    J'aime reçus:
    0
    C'est bon ça marche par contre lorsque je tape ww.monsite.com/modules.php?name=Variable, ça me revvoi sur ww.monsite.com/mots-cles.html?name=Variable, vous n'avez pas une idée pour que ça ne renvoi que sur ww.monsite.com/mots-cles.html , sans les variables après? Voici mon code :
    RewriteCond %{THE_REQUEST} modules.php
    RewriteCond %{QUERY_STRING} name=Variable
    RewriteRule ^.*$ /mots-cles.html [R=301,L]
     
  5. nikoshr

    nikoshr WRInaute occasionnel

    Inscrit:
    10 Juillet 2003
    Messages:
    320
    J'aime reçus:
    0
    Code:
    RewriteCond %{THE_REQUEST} modules.php 
    RewriteCond %{QUERY_STRING} name=Variable 
    RewriteRule ^.*$ /mots-cles.html? [R=301,L]
    
     
  6. deweerdt

    deweerdt WRInaute impliqué

    Inscrit:
    12 Août 2003
    Messages:
    909
    J'aime reçus:
    0
    Merci beaucoup pour ton aide, ça marche, dernier petit problème, lorsque la redirection est faite elle redirige sur h**p://monsite.com/mots-cles.html au lien de h**p://www.monsite.com/mots-cles.html, comment celà se fait-il alors que à la base la page appelée était bien h**p://www.monsite.com/modules.php?name=Variable.
     
  7. nikoshr

    nikoshr WRInaute occasionnel

    Inscrit:
    10 Juillet 2003
    Messages:
    320
    J'aime reçus:
    0
    Pour les redirections implicites, Apache utilise le domaine canonique, à savoir ce qui est déclaré en ServerName (ici monsite.com) et -www.monsite.com est probablement déclaré en ServerAlias.
    Pour forcer www
    Code:
    RewriteCond %{THE_REQUEST} modules.php 
    RewriteCond %{QUERY_STRING} name=Variable 
    RewriteRule ^.*$ http://www.monsite.com/mots-cles.html? [R=301,L]
    
     
  8. deweerdt

    deweerdt WRInaute impliqué

    Inscrit:
    12 Août 2003
    Messages:
    909
    J'aime reçus:
    0
    Merci beaucoup, j'avais pensé à cette solution mais je voulais savoir pourquoi apache fesait ça, maintenant je sais :)