1. ⭐⭐⭐ Grosse PROMO en cours sur ma plateforme SEO My Ranking Metrics
    Rejeter la notice

Url rewriting et redirection 301 [R=301,L] ne fonctionne pas ensemble

Discussion dans 'URL Rewriting et .htaccess' créé par spyda, 18 Septembre 2013.

  1. spyda
    spyda Nouveau WRInaute
    Inscrit:
    18 Septembre 2013
    Messages:
    5
    J'aime reçus:
    0
    Bonjour à tous,
    je vous explique donc précisément la problématique :
    -j'ai un site http://www.monsite.fr
    -Mon nom de domaine pointe sur le dossier monsite sur mon serveur linux mutualisé de chez godaddy (tous les fichiers et dossiers relatifs à mon site web se trouvent dans ce dossier)
    -Dans ce dossier j'y est créé mon fichier .htacess
    -Voici l'url que j'avais avant : http://www.monsite.fr/mot1-mot2-en.php?action=mot3&numero=10alias=toto
    je souhaitais la réécrire de cette façon : http://www.monsite.fr/10-unmot-unautremot-tot et cela de façon dynamique.
    -J'ai donc créé cette règle dans mon .htacess :
    Options +FollowSymlinks
    RewriteEngine On
    RewriteRule ^([0-9]+)-unmot-unautremot-(.*)$ /mot1-mot2-en.php?action=mot3&numero=$1&alias=$2 [L]
    -Ensuite j'ai modifié tous les anciens liens dans mes pages :
    mot1-mot2.php?action=mot3&numero=<?php echo $data['variable1'];?>&alias=<?php echo $data['variable2'];?>
    en
    <?php echo $data['variable1'];?>-unmot-unautremot-<?php echo $data['variable2'];?>
    -Et ça fonctionne bien donc jusqu'ici tous va bien du moins je pense :?
    -Lorsque je clique sur un nouveau lien du type : <?php echo $data['variable1'];?>-unmot-unautremot-<?php echo $data['variable2'];?> je me dirige bien vers la bonne page et l'url dans la barre d'adresse est au bon format (nouveau format) donc la réécriture fonctionne.
    Maintenant j'aurais voulu mettre en place une redirection 301 pour éviter le duplicate content... donc j'ai essayé pas mal de façon (redirectpermanent, flag[R=301,L], ...) et sans succès, une fois la réécriture fonctionne mais pas la redirection 301, une fois la redirection 301 fonctionne mais la réécriture ne se fait pas (l'url dans la barre d'adresse est dans l'ancien format).

    Donc voici ce que j'essaye de faire :
    Options +FollowSymlinks
    RewriteEngine On
    RewriteRule ^([0-9]+)-unmot-unautremot-(.*)$ /mot1-mot2-en.php?action=mot3&numero=$1&alias=$2 [R=301,L]

    Avec l'exemple ci-dessus la redirection 301 se fait mais pas la réécriture, pareil si je mets [L,R=301]

    Comment arriver à faire cohabiter la réécriture et la redirection en même temps?

    Je me casse la tête depuis 2jours sur 2petites lignes et la je suis à bout. 8O
    Merci beaucoup d'avance à ceux qui voudront bien m'aider. :wink:

    Ps : j'aimerais ne pas avoir à utiliser la méthode en php pour effectuer la redirection301
     
  2. Giustino
    Giustino WRInaute discret
    Inscrit:
    19 Novembre 2011
    Messages:
    140
    J'aime reçus:
    0
    C'est correct, mais tu peux peut-être remplacer (.*) pour ton alias par quelque chose de plus restrictif histoire d'optimiser (ça reste un détail malgré tout). Egalement, le slash avant ton fichier php est facultatif.

    Bonne initiative :)

    Bonne initiative également ! Tu es proche de la solution, ton problème vient à mon avis d'une boucle infinie de redirection.
    Pour éviter cette boucle, il faut faire une petite parade, quelque chose comme ceci:

    Code:
    RewriteEngine on
    
    RewriteRule     ^([0-9]+)-unmot-unautremot-([a-z]+)$     mot1-mot2-en.php?action=mot3&numero=$1&alias=$2&stopboucle [L]
    
    RewriteCond     %{QUERY_STRING}         ^action=mot3&numero=([0-9]+)&alias=([a-z]+)$
    RewriteRule      ^mot1-mot2-en.php$     %1-unmot-unautremot-%2? [R=301,L]
    
     
  3. spyda
    spyda Nouveau WRInaute
    Inscrit:
    18 Septembre 2013
    Messages:
    5
    J'aime reçus:
    0
    Bonjour et merci beaucoup pour ta réponse.
    J'ai donc mis en place ce que tu m'as proposé :

    Code:
        RewriteEngine on
        RewriteRule     ^([0-9]+)-unmot-unautremot-([a-z]+)$     mot1-mot2-en.php?action=mot3&numero=$1&alias=$2&stopboucle [L]
        RewriteCond     %{QUERY_STRING}         ^action=mot3&numero=([0-9]+)&alias=([a-z]+)$
        RewriteRule      ^mot1-mot2-en.php$     %1-unmot-unautremot-%2? [R=301,L]

    j'ai effectué 2 petites modifications :
    - ([a-z]+) -> (.*) car mes alias peuvent prendre toutes ces formes : Jean,jean,Jean04,jean04,Jean-04,jean-04,jéan-04
    - mot1-mot2-en.php?action=mot3&numero=$1&alias=$2&stopboucle -> /mot1-mot2-en.php?action=mot3&numero=$1&alias=$2&stopboucle car sinon j'ai une erreur 404

    La réécriture se fait toujours correctement mais pas de redirection 301 à l'horizon. :?
     
  4. Giustino
    Giustino WRInaute discret
    Inscrit:
    19 Novembre 2011
    Messages:
    140
    J'aime reçus:
    0
    Peux-tu détailler ce qui ne se passe pas comme tu le voudrais?
     
  5. spyda
    spyda Nouveau WRInaute
    Inscrit:
    18 Septembre 2013
    Messages:
    5
    J'aime reçus:
    0
    Bonjour,
    la redirection 301 ne fonctionne pas (quand je regarde dans firebug onglet réseau ou dans différents sites de test de redirection je vois toujours la page appelée en direct link ou code 200 mais pas 301 redirect permanent).
    Lorsque que je mets le Flag R seulement, j'arrive à voir cette redirection mais là l'url rewriting ne fonctionne pas dans la barre d'adresse.
    Je viens d'essayer avec la technique en PHP pour la redirection 301 mais cette fois ci j'ai l'erreur "header already sent".
    Je ne vais jamais m'en sortir.
     
  6. Giustino
    Giustino WRInaute discret
    Inscrit:
    19 Novembre 2011
    Messages:
    140
    J'aime reçus:
    0
    Etrange...

    Donc, si j'ai bien compris, quand tu appelles l'url réécrite (par exemple ceci) http://www.monsite.fr/10-unmot-unautremot-toto ça pointe bien sur le contenu de mot1-mot2-en.php?action=mot3&numero=10&alias=toto ?

    Par contre, quand tu appelles l'url en dur mot1-mot2-en.php?action=mot3&numero=10&alias=toto ça ne te fait pas une redirection 301 vers http://www.monsite.fr/10-unmot-unautremot-toto ?

    As-tu bien essayé les bons liens ? Que ce soit dans tes pages web ou urls saisies à la main. Ca peut sembler bête mais j'ai déjà eu le cas sur ce forum.

    Pour être sur qu'aucune autre règle ne fasse "collision", désactives TOUT et ne testes que cette partie.
    En dernier recours, si ça ne fonctionne vraiment pas et que l'erreur n'est pas trouvée, tu peux toujours passer par le php.
     
  7. spyda
    spyda Nouveau WRInaute
    Inscrit:
    18 Septembre 2013
    Messages:
    5
    J'aime reçus:
    0
    Je pense être tout proche de la solution, voici mon .htacces :
    RewriteEngine on
    RewriteRule ^([0-9]+)-unmot-unautremot-(.*)$ /mot1-mot2-en.php?action=mot3&numero=$1&alias=$2 [L]
    RewriteCond %{QUERY_STRING} ^action=mot3&numero=([0-9]+)&alias=(.*)$
    RewriteRule ^mot1-mot2-en\.php$ http://www.monsite.fr/%1-unmot-unautremot-%2? [R=301]

    Donc avec ce code lorsque que je clique sur un nouveau lien (http://www.monsite.fr/10-unmot-unautremot-toto), je me dirige bien vers http://www.monsite.fr/10-unmot-unautremot-toto mais il n'y a aucun contenu (page blanche).
    Lorsque je tape dans l'url l'ancien lien : http://www.monsite.fr/mot1-mot2-en.php?action=mot3&numero=10&alias=toto , la redirection 301 fonctionne bien et me redirige vers http://www.monsite.fr/10-unmot-unautremot-toto mais il n'y a aucun contenu (page blanche).

    Pourtant, lorsque je laisse ce code simplement :
    RewriteEngine on
    RewriteRule ^([0-9]+)-unmot-unautremot-(.*)$ /mot1-mot2-en.php?action=mot3&numero=$1&alias=$2 [L]
    lorsque que je clique sur un nouveau lien (http://www.monsite.fr/10-unmot-unautremot-toto), je me dirige bien vers http://www.monsite.fr/10-unmot-unautremot-toto et là il y a bien le contenu désiré.

    J'ai essayé autre chose, ajout de &stopboucle :
    RewriteEngine on
    RewriteRule ^([0-9]+)-unmot-unautremot-(.*)$ /mot1-mot2-en.php?action=mot3&numero=$1&alias=$2&stopboucle [L]
    RewriteCond %{QUERY_STRING} ^action=mot3&numero=([0-9]+)&alias=(.*)$
    RewriteRule ^mot1-mot2-en\.php$ http://www.monsite.fr/%1-unmot-unautremot-%2? [R=301]
    lorsque que je clique sur un nouveau lien (http://www.monsite.fr/10-unmot-unautremot-toto), je me dirige vers http://www.monsite.fr/10-unmot-unautremot-toto&stopboucle&stopboucle&stopboucle&stopboucle&stopboucle&stopboucle&stopboucle&stopboucle

    J'ai essayé aussi :
    RewriteEngine on
    RewriteRule ^([0-9]+)-unmot-unautremot-(.*)$ /mot1-mot2-en.php?action=mot3&numero=$1&alias=$2&stopboucle [L]
    RewriteCond %{QUERY_STRING} ^action=mot3&numero=([0-9]+)&alias=(.*)$
    RewriteRule ^mot1-mot2-en\.php$ http://www.monsite.fr/%1-unmot-unautremot-%2? [R=301,L]
    et même résultat que l'exemple précédent.
     
  8. Giustino
    Giustino WRInaute discret
    Inscrit:
    19 Novembre 2011
    Messages:
    140
    J'aime reçus:
    0
    Ta dernière manière est la plus correcte, tu es obligé d'avoir [R=301,L] ensemble !

    Essayes ceci:

    Code:
    RewriteEngine on
    RewriteBase /
    
    RewriteRule     ^([0-9]+)-unmot-unautremot-(.*)$     mot1-mot2-en.php?action=mot3&numero=$1&alias=$2&stopboucle [L]
    
    RewriteCond    %{QUERY_STRING}     ^action=mot3&numero=([0-9]+)&alias=(.*)$
    RewriteRule     ^mot1-mot2-en.php$     %1-unmot-unautremot-%2? [R=301,L]
    
    Sincèrement, si tu recopies EXACTEMENT ce bout de code et que tu testes avec UNIQUEMENT cela dans ton htaccess, et que ça ne fonctionne toujours pas, alors je ne sais pas...

    EDIT: testes aussi ceci si ça ne fonctionne pas avec le code plus haut:

    Code:
    RewriteEngine on
    RewriteBase /
    
    RewriteRule     ^([0-9]+)-unmot-unautremot-(.*)$     mot1-mot2-en.php?action=mot3&stopboucle&numero=$1&alias=$2 [L]
    
    RewriteCond    %{QUERY_STRING}     ^action=mot3&numero=([0-9]+)&alias=(.*)$
    RewriteRule     ^mot1-mot2-en.php$     %1-unmot-unautremot-%2? [R=301,L]
    
     
  9. spyda
    spyda Nouveau WRInaute
    Inscrit:
    18 Septembre 2013
    Messages:
    5
    J'aime reçus:
    0
    Bonjour,
    Amen, la deuxième solution fonctionne très bien :
    RewriteEngine on
    RewriteBase /

    RewriteRule ^([0-9]+)-unmot-unautremot-(.*)$ mot1-mot2-en.php?action=mot3&stopboucle&numero=$1&alias=$2 [L]

    RewriteCond %{QUERY_STRING} ^action=mot3&numero=([0-9]+)&alias=(.*)$
    RewriteRule ^mot1-mot2-en.php$ %1-unmot-unautremot-%2? [R=301,L]

    Merci beaucoup pour ton aide acharnée et le temps que tu m'as consacré.
     
Chargement...
Similar Threads - rewriting redirection 301 Forum Date
Conflit de redirection 301 et Urlrewriting Netlinking, backlinks, liens et redirections 20 Février 2019
URL REWRITING et redirection 301 URL Rewriting et .htaccess 24 Janvier 2019
Problème avec URL rewriting après redirection 301 URL Rewriting et .htaccess 5 Novembre 2014
Redirection 301 et rewriting avec plusieurs variables URL Rewriting et .htaccess 12 Juin 2014
[URL REWRITING] Redirection 301 pages générées URL Rewriting et .htaccess 12 Novembre 2013
Redirection 301 sur un fichier déjà en URL rewriting URL Rewriting et .htaccess 21 Mars 2012
Site html passe à joomla, redirection 301, url rewriting page par page Débuter en référencement 12 Mars 2012
Redirection 301 + URL rewriting URL Rewriting et .htaccess 14 Juillet 2011
Redirection 301 url rewriting avec mots clés Netlinking, backlinks, liens et redirections 4 Juin 2011
Url rewriting + redirection 301 URL Rewriting et .htaccess 13 Janvier 2011
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice