Redirection pour eviter des doublons

Discussion dans 'URL Rewriting et .htaccess' créé par pclorraine, 11 Février 2008.

  1. pclorraine
    pclorraine Nouveau WRInaute
    Inscrit:
    8 Janvier 2006
    Messages:
    38
    J'aime reçus:
    0
    Bonjour à tous.

    Je cherche une solution pour eviter que mes pages soient en double.

    J'ai fait ceci:
    RewriteRule ^news.html$ /modules/news/ [L]

    Donc maintenant je peux aller sur example.com/news.html mais aussi sur example.com/modules/news/ ces deux url seront identiques.

    Comment faire pour que lorsque je tombe sur /modules/news/ je soit automatiquement redirigé vers news.html

    Merci par avance.

    Bonne journée à tous.
     
  2. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 695
    J'aime reçus:
    1
    avec ca :
    Code:
    RewriteRule ^modules/news/$ /news.html [R=301,QSA,L] 
     
  3. pclorraine
    pclorraine Nouveau WRInaute
    Inscrit:
    8 Janvier 2006
    Messages:
    38
    J'aime reçus:
    0
    Bonjour,

    J'ai essayé ça marche. Lorsque je tape /modules/news/ je tombe sur news.html mais malheureusement c'est une page avec 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.


    Voici ce que j'ai ajouté dans mon htaccess
    Code:
    RewriteCond %{HTTP_HOST} ^fleursdubien.fr$
    RewriteRule ^(.*)   http://www.fleursdubien.fr/$1  [QSA,L,R=301]
    RewriteRule ^modules/news/$ /news.html [R=301,QSA,L]
    RewriteRule ^news.html$		/modules/news/                                    [L]
     
  4. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 695
    J'aime reçus:
    1
    si ca boucle, il faut ajouter un petit test et un paramètre bidon :
    Code:
    RewriteCond %{HTTP_HOST} ^fleursdubien.fr$
    RewriteRule ^(.*)   http://www.fleursdubien.fr/$1  [QSA,L,R=301]
    RewriteCond %{QUERY_STRING} !stop
    RewriteRule ^modules/news/$ /news.html [R=301,QSA,L]
    RewriteRule ^news.html$      /modules/news/?stop                                    [L]
     
  5. pclorraine
    pclorraine Nouveau WRInaute
    Inscrit:
    8 Janvier 2006
    Messages:
    38
    J'aime reçus:
    0
    Merci beaucoup webmasterlamogere,

    Ca fonctionne très bien pour /modules/news/

    J'ai essayé de faire pareil avec un nouveau lien mais ça ne fonctionne pas je peux aller sur livre-dor.html et modules/xfguestbook/

    Code:
    RewriteCond %{HTTP_HOST} ^fleursdubien.fr$
    RewriteRule ^(.*)   http://www.fleursdubien.fr/$1  [QSA,L,R=301]
    RewriteCond %{QUERY_STRING} !stop
    RewriteRule ^modules/news/$ /news.html [R=301,QSA,L]
    RewriteRule ^news.html$      /modules/news/?stop                                    [L]
    RewriteRule ^modules/xfguestbook/$      /livre-dor.html                                    [R=301,QSA,L]
    RewriteRule ^livre-dor.html$      /modules/xfguestbook/?stop                                    [L]
    J'ai oublié quelque chose?

    Encore merci de m'aider
     
  6. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 695
    J'aime reçus:
    1
    oui, Les "RewriteCond" ne s'appliquent qu'a la "RewriteRule" qui suit. Il faut donc ajouter la condition :
    Code:
    RewriteCond %{HTTP_HOST} ^fleursdubien.fr$
    RewriteRule ^(.*)   http://www.fleursdubien.fr/$1  [QSA,L,R=301]
    RewriteCond %{QUERY_STRING} !stop
    RewriteRule ^modules/news/$ /news.html [R=301,QSA,L]
    RewriteRule ^news.html$      /modules/news/?stop                                    [L]
    RewriteCond %{QUERY_STRING} !stop
    RewriteRule ^modules/xfguestbook/$      /livre-dor.html                                    [R=301,QSA,L]
    RewriteRule ^livre-dor.html$      /modules/xfguestbook/?stop                                    [L]
     
  7. pclorraine
    pclorraine Nouveau WRInaute
    Inscrit:
    8 Janvier 2006
    Messages:
    38
    J'aime reçus:
    0
    Bonsoir,

    Je viens d'essayer et c'est bizzare pour modules/news/ ça fonctionne très bien mais pas pour /modules/xfguestbook/ ,je peux aller sur les deux urls.

    Bizzare non?
     
  8. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    992
    J'aime reçus:
    0
    Peux tu mettre tout ton .htaccess?

    Sinon, as tu un autre .htaccess dans /modules/ ou dans /modules/xfguestbook/?

    Enfin, tantot tu utilise des url /modules/... tantot modules/... (sans / en premier). Est-ce fait exprès?
     
  9. pclorraine
    pclorraine Nouveau WRInaute
    Inscrit:
    8 Janvier 2006
    Messages:
    38
    J'aime reçus:
    0
    Bonsoir,

    Voici mon htaccess:
    Code:
        # Lines That should already be in your .htacess
        <Files "config.php">
        Order Allow,Deny
        Deny from All
        </Files>
        <Files "common.php">
        Order Allow,Deny
        Deny from All
        </Files>
    
        # Options +FollowSymlinks
        # REMEBER YOU ONLY NEED TO STARD MOD REWRITE ONCE
        RewriteEngine On
        # REWRITE BASE
        RewriteBase /
        # HERE IS A GOOD PLACE TO ADD THE WWW PREFIXE REDIRECTION
    
    ###########
    #URL REWRITE DU SITE
    ###########
    
    ###Les news
    RewriteRule ^.*hydroponie-([0-9]*)-[^/]+.html /modules/news/article.php?storyid=$1 [L]
    RewriteRule ^.*hydroponie([0-9]*)-[^/]+.html /modules/news/index.php?storytopic=$1 [L]  
    
    
    
    ###REECRITURE SITE
    RewriteCond %{HTTP_HOST} ^fleursdubien.fr$
    RewriteRule ^(.*)   http://www.fleursdubien.fr/$1  [QSA,L,R=301]
    RewriteCond %{QUERY_STRING} !stop
    RewriteRule ^modules/news/$ /news.html [R=301,QSA,L]
    RewriteRule ^news.html$      /modules/news/?stop                                    [L]
    RewriteCond %{QUERY_STRING} !stop
    RewriteRule ^modules/xfguestbook/$      /livre-dor.html                                    [R=301,QSA,L]
    RewriteRule ^livre-dor.html$      /modules/xfguestbook/?stop                                    [L]
    
    ####################################################
        # PHPBB SEO REWRITE RULES - ADVANCED
        #####################################################
        # AUTHOR : dcz www.phpbb-seo.com
        # STARTED : 01/2006
        #################################
        # FORUMS PAGES
        ###############
        # FORUM INDEX
        RewriteRule ^forum\.html$ forum/index.php [QSA,L,NC]
        # FORUM
        RewriteRule ^[a-z0-9_-]*-f([0-9]+)/?(page([0-9]+)\.html)?$ forum/viewforum.php?f=$1&start=$3 [QSA,L,NC]
        # TOPIC WITH VIRTUAL FOLDER
        RewriteRule ^[a-z0-9_-]*-f([0-9]+)/[a-z0-9_-]*-t([0-9]+)(-([0-9]+))?\.html$ forum/viewtopic.php?f=$1&t=$2&start=$4 [QSA,L,NC]
        # GLOBAL ANNOUNCES WITH VIRTUAL FOLDER
        RewriteRule ^annonces/[a-z0-9_-]*-t([0-9]+)(-([0-9]+))?\.html$ forum/viewtopic.php?t=$1&start=$3 [QSA,L,NC]
        # TOPIC WITHOUT FORUM ID & DELIM
        RewriteRule ^[a-z0-9_-]*/?[a-z0-9_-]*-t([0-9]+)(-([0-9]+))?\.html$ forum/viewtopic.php?t=$1&start=$3 [QSA,L,NC]
        # PROFILES THROUGH USERNAME
        RewriteRule ^membre/([^/]+)/?$ forum/memberlist.php?mode=viewprofile&un=$1 [QSA,L,NC]
        # USER MESSAGES THROUGH USERNAME
        RewriteRule ^messages/([^/]+)/?(page([0-9]+)\.html)?$ forum/search.php?author=$1&sr=posts&start=$3 [QSA,L,NC]
        # GROUPS ADVANCED
        RewriteRule ^[a-z0-9_-]*-g([0-9]+)(-([0-9]+))?\.html$ forum/memberlist.php?mode=group&g=$1&start=$3 [QSA,L,NC]
        # POST
        RewriteRule ^post([0-9]+)\.html$ forum/viewtopic.php?p=$1 [QSA,L,NC]
        # THE TEAM
        RewriteRule ^equipe\.html$ forum/memberlist.php?mode=leaders [QSA,L,NC]
        # HERE IS A GOOD PLACE TO ADD OTHER PHPBB RELATED REWRITERULES
    
        # FORUM WITHOUT ID & DELIM
        # THESE FOUR LINES MUST BE LOCATED AT THE END OF YOUR HTACCESS TO WORK PROPERLY
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-l
        RewriteRule ^[a-z0-9_-]+/?(page([0-9]+)\.html)?$ forum/viewforum.php?start=$2 [QSA,L,NC]
        # END PHPBB PAGES
        #####################################################
    Non je viens de vérifier il n'y a rien.

    Je sais pas, ça fonctionne comme ça. Modules/news fonctionne bien mais pas modules/xfguestbook/

    Bonne soirée à tous.
     
  10. pclorraine
    pclorraine Nouveau WRInaute
    Inscrit:
    8 Janvier 2006
    Messages:
    38
    J'aime reçus:
    0
    Bonjour à tous,

    Je n'arrive toujours pas :-(

    Avec ceci:
    Code:
    ###REECRITURE SITE
    RewriteCond %{HTTP_HOST} ^fleursdubien.fr$
    RewriteRule ^(.*)   http://www.fleursdubien.fr/$1  [QSA,L,R=301]
    RewriteCond %{QUERY_STRING} !stop
    RewriteRule ^modules/news/$ /news.html [R=301,QSA,L]
    RewriteRule ^news.html$      /modules/news/?stop                                    [L]
    RewriteCond %{QUERY_STRING} !stop
    RewriteRule ^modules/xfguestbook/$      /livre-dor.html                                    [R=301,QSA,L]
    RewriteRule ^livre-dor.html$      /modules/xfguestbook/?stop                                    [L]
    RewriteCond %{QUERY_STRING} !stop
    RewriteRule ^modules/nous-contacter/$      /nous-contacter.html                                    [R=301,QSA,L]
    RewriteRule ^nous-contacter.html$      /modules/nous-contacter/?stop                                    [L]
    Le premier fonctionne mais pas les deux autres. Comment faire?

    Merci par avance.
    Bonne journée
     
  11. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 695
    J'aime reçus:
    1
    ca doit forcément marcher. j'ai même testé en local avec wamp et ca marche.
    il doit y avoir un conflit avec une règle de PHPBB. tu peux peut-être faire un test en les supprimant toutes et en les remettant une par une pour voir celle qui pose problème.
     
  12. pclorraine
    pclorraine Nouveau WRInaute
    Inscrit:
    8 Janvier 2006
    Messages:
    38
    J'aime reçus:
    0
    Merci beaucoup oui ça fonctionne sans phpbb je vais trouver le problème.

    Et donc là c'est pour une répertoire mais comment faire pour une page, par exemple:

    Je souhaiterais transformer ça -> /modules/edito/content.php?id=1 en ceci: /page-sur-les-bateaux.html

    Merci par avance.
     
  13. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 695
    J'aime reçus:
    1
    avec ca :
    Code:
    RewriteCond %{QUERY_STRING} ^id=1$
    RewriteRule ^modules/edito/content\.php$ /page-sur-les-bateaux.html? [R=301,L]
    RewriteRule ^page-sur-les-bateaux\.html$      /modules/edito/content.php?id=1&stop                                    [L]
    
     
  14. pclorraine
    pclorraine Nouveau WRInaute
    Inscrit:
    8 Janvier 2006
    Messages:
    38
    J'aime reçus:
    0
    Merci énormément webmasterlamogere ton aide m'a été super utile!

    Bonne aprème.
     
  15. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    992
    J'aime reçus:
    0
    Suffit de demander :wink:

    Code:
    RewriteCond %{QUERY_STRING} ^id=1$
    RewriteRule ^modules/edito/content\.php /page-sur-les-bateaux.html [R=301,L]
    
    Edit: grillé.
     
  16. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    619
    J'aime reçus:
    2
    Salut,

    Un peu d'aide serait le bien venu :p

    J'essaie de rewritter mes anciennes url et de faire une redirection des anciennes url vers les nouvelles via un htaccess mais j'ai quelques difficultés, ça marche pas :

    Mes anciennes url sont du type :
    Mes nouvelles url sont du type :
    Je souhaiterai établir une règle qui me permette de ré-écrire mes url et une autre qui redirige mes anciennes url vers les nouvelles afin d'éviter le duplicate content, comment faire cela ?

    J'ai essayé ça mais ça marche pas :
    Voyez-vous une ou des erreur(s) ?

    Merci pour vos réponses.
     
  17. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    992
    J'aime reçus:
    0
    Il y a une erreur sur ta condition. Tu termine la chaine avec le =, alors qu'il y a encore le numéro de rubrique.

    Essaie ça:

    Code:
    RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$ 
    RewriteRule ^repertoire/index\.php(.*) /mon-site.com/repertoire/ma-rubrique-%1.html [R=301,L]
    RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L] 
    
    Si la premiere regle ne arche pas parce que la QUERY_STRING est rajoutée, remplace la par:


    Code:
    RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$ 
    RewriteRule ^repertoire/index\.php(.*) /mon-site.com/repertoire/ma-rubrique-%1.html? [R=301,L]
    RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L] 
    
     
  18. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    619
    J'aime reçus:
    2
    Merci Vap pour ta réponse mais ça ne marche pas :oops:

    Je ne vois pas de différence entre 2 tes propositions, est-ce normal ?

    Est-ce que tu confirmes qu'il faut bien mettre -%1.html et pas -$1.html à la fin de la deuxième ligne de ton code ?
     
  19. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    992
    J'aime reçus:
    0
    Oui. Car on récupère la chaine de caratère qui est entre parenthese dans la condition.

    Je testerai a mon retour chez moi.
     
  20. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    619
    J'aime reçus:
    2
    Vap en fait lorsque j'utilise ce code :
    Code:
    RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$ 
    RewriteRule ^repertoire/index\.php(.*) /mon-site.com/repertoire/ma-rubrique-%1.html [R=301,L] 
    RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L]
    ou avec le point d'interrogation à la fin de la deuxième lignes :
    Code:
    RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$ 
    RewriteRule ^repertoire/index\.php(.*) /mon-site.com/repertoire/ma-rubrique-%1.html? [R=301,L] 
    RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L]
    ni mes anciennes, ni mes nouvelles url fonctionnent ça me renvoie une erreur 404.

    Si j'utilise ce code :
    Code:
    RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$ 
    RewriteRule ^repertoire/index\.php?rub=ma_rubrique&module=liste&ref=(.*) /mon-site.com/repertoire/ma-rubrique-%1.html [R=301,L] 
    RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L]
    mes anciennes url fonctionnent mais pas les nouvelles ! Même chose si je remplace le %1 par $1

    J'ai essayé aussi de remplacer le %{QUERY_STRING} par %{REQUEST_URI} mais ça change rien :cry:
     
  21. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 695
    J'aime reçus:
    1
    il n'est pas possible de mettre des paramètres dans la partie gauche des RewriteRule. Il faut mettre &stop sinon il y a deux ?
    avec ca :
    Code:
    RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
    RewriteRule ^repertoire/index\.php$ /mon-site.com/repertoire/ma-rubrique-%1.html [R=301,L]
    RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1&stop [L]
     
  22. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    619
    J'aime reçus:
    2
    Merci pour ta réponse webmasterlamogere mais ça ne marche pas non plus, Internet Explorer m'affiche une page d'erreur avec le message suivant "Internet Explorer ne peut pas afficher cette page web" et j'ai essayé avec les anciennes commes les nouvelles url :cry:

    Il me reste la possibilité de mettre ce bout de code dans mon code html du style :
    Code:
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://www.mon-site.com/repertoire/ma-rubrique-12.html");
     exit;
    Mais bon si je pouvais faire cela dans le htaccess ce serait quand même mieux !
     
  23. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 695
    J'aime reçus:
    1
    c'est peut-être avec ca :
    Code:
    RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
    RewriteRule ^repertoire/index\.php$ /repertoire/ma-rubrique-%1.html [R=301,L]
    RewriteRule ^repertoire/ma-rubrique-(.*)\.html$ /repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1&stop [L]
     
  24. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    619
    J'aime reçus:
    2
    Non ça ne change rien, même page d'erreur "Internet Explorer ne peut pas afficher cette page web" :cry:
     
  25. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 695
    J'aime reçus:
    1
    il ne faut pas oublier "RewriteEngine on" en premier :
    Code:
    RewriteEngine on
    RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
    RewriteRule ^repertoire/index\.php$ /repertoire/ma-rubrique-%1.html [R=301,L]
    RewriteRule ^repertoire/ma-rubrique-(.*)\.html$ /repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1&stop [L]
     
  26. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    619
    J'aime reçus:
    2
    Le "RewriteEngine on" est bien mis dans mon htaccess.

    Dans ton dernier code tu as enlevé le /mon-site.com si tu enlèves ça en local ça ne peut pas marcher, non ? De toute manière, j'ai essayé avec et sans /mon-site.com mais ça change rien, même résultat, toujours la page d'erreur "Internet Explorer ne peut pas afficher cette page web" :cry:
     
  27. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 695
    J'aime reçus:
    1
    si le chemin est h**p://localhost/mon-site.com/repertoire/index.php?... il faut bien mettre le chemin complet : /mon-site.com/repertoire/index.php
    le fichier .htacess doit être dans le répertoire /mon-site.com
     
  28. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    619
    J'aime reçus:
    2
    Oui tout ça c'est bon et le htaccess est bien dans le bon répertoire, à la racine de mon site "mon-site.com ".
     
  29. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 695
    J'aime reçus:
    1
    en effet, je viens de tester chez moi et la solution est d'ajouter un ? pour éviter de transmettre les paramètres et de déplacer le stop pour qu'il ne soit pas pris avec le paramètre ref :
    Code:
    RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
    RewriteRule ^repertoire/index\.php$ /mon-site.com/repertoire/ma-rubrique-%1.html? [R=301,L]
    RewriteRule ^repertoire/ma-rubrique-(.*)\.html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&stop&ref=$1 [L]
     
  30. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    619
    J'aime reçus:
    2
    Chapeau bas maître webmasterlamogere ça marche impeccable :lol:

    Merci pour ton aide.

    Une autre petite question : je souhaite faire une redirection d'une ancienne url vers une nouvelle url mais qui n'est pas dans le même répertoire, autrement dit :
    Ancienne url :
    Code:
    h**p://www.mon-site.com/repertoire/index.php?rub=ma_rubrique
    Nouvelle destination pour cette page :
    Code:
    h**p://www.mon-site.com/repertoire2/nouvelle-rubrique.html
    Est-ce possible ?
     
  31. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    992
    J'aime reçus:
    0
    Webmasterlamogere a raison, il y avait deux ? dans mes règles, ce qui ne marche pas.

    Ce qui suit marche chez moi :

    Code:
    RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=([0-9]+)$
    RewriteRule ^index\.php(.*)$ /ma-rubrique-%1.html? [R=301,L]
    RewriteRule ^ma-rubrique-(.*).html$ /index.php?rub=ma_rubrique&module=liste&ref=$1&stop [L]
    
    dans un .htaccess situé dans mon-site.com/repertoire/

    J'ai changé la fin de la condition, sinon ça parse le &stop additionnel, et ça boucle.

    Si tu veux un .htaccess a la racine de ton site, ce qui suit devrait marcher :

    Code:
    RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=([0-9]+)$
    RewriteRule ^repertoire/index\.php(.*)$ /repertoire/ma-rubrique-%1.html? [R=301,L]
    RewriteRule ^repertoire/ma-rubrique-(.*).html$ /repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1&stop [L]
    
    Je te conseille plutot un .htaccess par repertoire, ce sera plus efficace car le serveur n'a pas a parser toutes les règles. Il parse seulement les règles du repertoire courant. En plus les regles sont plus simples.

    Edit: encore grillé!
     
  32. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    992
    J'aime reçus:
    0
    Ca marche pareil:

    Code:
    RewriteCond %{QUERY_STRING} ^rub=ma_rubrique$
    RewriteRule ^repertoire/index\.php(.*)$ /repertoire2/nouvelle-rubrique.html? [R=301,L]
    RewriteRule ^repertoire2/nouvelle-rubrique.html$ /repertoire/index.php?rub=ma_rubrique&stop [L] 
    
     
  33. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    619
    J'aime reçus:
    2
    Merci Vap pour ta réponse, ça marche parfaitement bien :lol:

    Encore une petite question : est-il possible d'ajouter des règles en php dans un htaccess, par exemple des "ereg" ou "ereg_replace" ? Si oui pouvez-vous donner une petit exemple avec un "ereg_replace" ?

    Par exemple j'ai parfois des pages avec une variable "page" qui est à "0" ce qui fait un duplicate content, par exemple :
    Code:
    h**p://www.mon-site.com/repertoire/index.php?rub=ma_rubrique
    et
    Code:
    h**p://www.mon-site.com/repertoire/index.php?rub=ma_rubrique&page=0
    C'est la même page, je souhaiterai donc écrire une règle dans le htaccess qui dises que dès qu'il aura un "&page=0" dans l'url du browser on redirige vers cette même url mais sans le "&page=0" (avec un ereg_replace par exemple), comment faire cela ?
     
  34. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    992
    J'aime reçus:
    0
    On ne peut pas utiser de PHP dans un .htaccess, sauf a faire appel a un programme externe.

    Mais on peut faire ce que tu veux je crois:

    Code:
    RewriteCond %{QUERY_STRING} ^(.*)&page=0$
    RewriteRule ^repertoire/index\.php(.*)$ /repertoire/index.php?%1 [R=301]
    
    Cette règle enleve le le page=0. Il faut la mettre avant les autres, car on veut pouvori réecrire l'URL résultat. C'est pour cela qu'il n'y a pas de flag L a la fin.
     
  35. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 695
    J'aime reçus:
    1
    c'est le même principe :
    Code:
    RewriteCond %{QUERY_STRING} ^rub=ma_rubrique$
    RewriteRule ^repertoire/index\.php$ /repertoire2/nouvelle-rubrique.html? [R=301,L] 
     
  36. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    619
    J'aime reçus:
    2
    Merci pour vos réponses.

    1) Faut-il mieux mettre un htaccess dans chaque répertoire ou un seul à la racine du site ?

    2) Si je met un htaccess dans chaque répertoire et un autre à la racine du site, est-ce le fait d'avoir une règle dans cet htaccess à la racine du site fera que cette règle s'appliquera à tout mon site (incluant tous les répertoires) ou bien est-ce que la fait d'avoir un htaccess dans chaque répertoire annule les règles qui sont mises dans les htaccess à la racine du site ?

    3) La structure des règles des htaccess dans les répertoires sont-elle les mêmes que pour le htaccess à la racine du site ? Autrement dit si j'ai cette règle dans un htacess à la racine du site :
    Code:
    RewriteCond %{QUERY_STRING} ^(.*)&page=0$ 
    RewriteRule ^repertoire/index\.php(.*)$ /repertoire/index.php?%1 [R=301] 
    est-ce qu'il faut mettre la même règle dans un htaccess dans le répertoire /repertoire/ ?
     
  37. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    992
    J'aime reçus:
    0
    C'est plus simple d'en avoir un a la racine.

    Il faut ajouter
    Code:
    RewriteOptions inherit
    dans les .htaccess des sous répertoires, sinon les regles du .htaccess de la racine seront ignorées.

    Non. L'interet d'avoir un .htaccess dans chaque réperoire est d'écrire la règle là ou elle est utile, pas à la racine.

    La règle que tu donne peut etre remplacée par la règle suivante dans un .htaccess dans le répertoire /repertoire/ :
    Code:
    RewriteCond %{QUERY_STRING} ^(.*)&page=0$ 
    RewriteRule ^index\.php(.*)$ index.php?%1 [R=301] 
    Dans ce cas, tu enlève la règle du .htaccess de la racine.

    Ce que je te conseille: tu fais d'abors un seul .htaccess a la racine.

    Puis, quand ça marche bien, pour optimiser, tu transfère petit a petit les règles vers les .htaccess des repertoires. Et tu n'oublie pas l'option ci dessus!

    Mais ce n'est pas du tout obligatoire d'optimiser.
     
  38. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    619
    J'aime reçus:
    2
    Merci pour ta réponse Vap.
     
  39. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    619
    J'aime reçus:
    2
    Salut,

    Je comprends pas :oops:

    J'ai rewritté quelques pages suivant cette règle :
    Code:
    RewriteRule ^repertoire/ma-rubrique.html&ref=(.*)$ /repertoire/index.php?rub=ma_rubrique&ref=$1 [L] 
    
    Ma page rewrittée s'affiche bien dans mon browser et dans la barre d'adresse j'ai bien h*ttp://www.mon-site.com/repertoire/ma-rubrique.html&ref=25 mais lorsque je souhaite récupérer ma variable "ref" il ne la trouve pas, j'ai essayé de faire un $_GET['ref'] mais sur mon serveur sur le web il ne me trouve pas cette variable "ref" quelqu'un voit-il le problème ?

    Voici ce qu'il m'affiche sur mon serveur web :
    Code:
    $_SERVER['QUERY_STRING'] = rub=ma_rubrique
    $_SERVER['REQUEST_URI'] = /repertoire/ma-rubrique.html&ref=25
    $_GET['ref'] = 
    
    En local tout marche parfaitement mais sur le serveur web ça bug ? Je suis chez OVH et je tourne sous PHP5.
     
Chargement...
Similar Threads - Redirection eviter doublons Forum Date
Faut-il éviter la Redirection 301 sur son site ? Référencement Google 9 Mai 2017
TUTORIEL - Eviter les boucles de redirection URL Rewriting et .htaccess 25 Septembre 2013
Redirection pour éviter duplicate content URL Rewriting et .htaccess 24 Janvier 2011
Redirection 301 pour éviter le duplicat content Crawl et indexation Google, sitemaps 12 Novembre 2010
Comment éviter un redirection loop ? URL Rewriting et .htaccess 13 Juillet 2010
Comment supprimer les redirections www avec Joomla Netlinking, backlinks, liens et redirections 5 Février 2019
Redirection non prise en compte Netlinking, backlinks, liens et redirections 5 Février 2019
Ht access redirection url% suite piratage URL Rewriting et .htaccess 4 Février 2019
Redirection 301 et menu Crawl et indexation Google, sitemaps 1 Février 2019
Redirection 301 en .htaccess avec Redirect 301 URL Rewriting et .htaccess 31 Janvier 2019
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice