problème de boucle et de redirection de diverses anciennes pages

Discussion dans 'URL Rewriting et .htaccess' créé par zepokpok, 4 Juin 2014.

  1. zepokpok
    zepokpok Nouveau WRInaute
    Inscrit:
    12 Janvier 2013
    Messages:
    21
    J'aime reçus:
    0
    Salut à tous,

    Je viens de refondre un site web, les anciennes url étaient non explicites, j'ai créé un site avec des urls propres.
    J'avais prévu de faire des redirections 301 sur chaque ancienne page vers la nouvelle mais je me trouve face à deux soucis :

    1 - j'ai une boucle de redirection à cause d'un autre paramètre, j'ai trouvé pourquoi mais pas sur que l'absence de la commande m'arrange.

    2 - la redirection ne marche pas quoi qu'il arrive, même si je ne garde qu'un élément. je pense que la redirection 301 interfère avec la réécriture d'urls propres du site.

    Voici mon .htaccess :



    Code:
    
    DirectoryIndex index.php
    
    RewriteEngine On
    
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME} !-f
    
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteRule .\.html$ index.php [L]
    
    RewriteCond %{HTTP_HOST} nouveausiteavecdomaineidentique\.com [NC]
    
    RewriteCond %{HTTP_HOST} !^www\.nouveausiteavecdomaineidentique\.com [NC]
    
    RewriteRule ^(.*) http://nouveausiteavecdomaineidentique\.com/$1 [L,R=301]
    
    ErrorDocument 404 /index.php
    
    
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=2 http://www.nouveausiteavecdomaineidentique.com
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=789&theme=1 http://www.nouveausiteavecdomaineidentique.com/les-chambres-3-cles.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=789&theme=pe22e http://www.nouveausiteavecdomaineidentique.com/les-chambres-3-cles.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=790&theme=pe22e http://www.nouveausiteavecdomaineidentique.com/roulottes-hotelieres.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=799 http://www.nouveausiteavecdomaineidentique.com/roulottes-hotelieres.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=800 http://www.nouveausiteavecdomaineidentique.com/roulottes-gites.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=791&theme=pe22e http://www.nouveausiteavecdomaineidentique.com/le-carre-detoiles.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=825&theme=1 http://www.nouveausiteavecdomaineidentique.com/le-ptit-buron-du-vacher.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=818&theme=pe22e http://www.nouveausiteavecdomaineidentique.com/la-vie-au-domaine-de-la-chaux-de-revel.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=801&theme=1 http://www.nouveausiteavecdomaineidentique.com/pays-de-salers-15.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=793&theme=pe22e http://www.nouveausiteavecdomaineidentique.com/piscine-et-sauna.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=803 http://www.nouveausiteavecdomaineidentique.com/piscine-et-sauna.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=822&theme=1 http://www.nouveausiteavecdomaineidentique.com/restaurations.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=811&theme=pe22e http://www.nouveausiteavecdomaineidentique.com/la-kota-boutique.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=813&theme=1 http://www.nouveausiteavecdomaineidentique.com/autres-services.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=794&theme=pe22e http://www.nouveausiteavecdomaineidentique.com/temoignages.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=816 http://www.nouveausiteavecdomaineidentique.com/temoignages.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=821&theme=1 http://www.nouveausiteavecdomaineidentique.com/reservation.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=798&theme=pe22e http://www.nouveausiteavecdomaineidentique.com/liens-et-partenaires.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=796&theme=1 http://www.nouveausiteavecdomaineidentique.com/les-seminaires.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=797&theme=pe22e http://www.nouveausiteavecdomaineidentique.com/sejours-a-theme.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=823&theme=1 http://www.nouveausiteavecdomaineidentique.com/contact.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=820&theme=pe22e http://www.nouveausiteavecdomaineidentique.com/presse.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=817&theme=1 http://www.nouveausiteavecdomaineidentique.com/holidays-in-auvergne.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=819&theme=pe22e http://www.nouveausiteavecdomaineidentique.com/vacanze-in-auvergne.html
    redirect 301 /anciensite/pages/viewer.asp?tp=d&id=10384&ID_ELEMENT=795 http://www.nouveausiteavecdomaineidentique.com/tarifs.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=824 http://www.nouveausiteavecdomaineidentique.com/pascal-montaz.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=808&theme=1 http://www.nouveausiteavecdomaineidentique.com/offrez-un-bon-cadeau.html
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=810&theme=1 http://www.nouveausiteavecdomaineidentique.com/sejours-a-theme.html
    
    Est ce que ça pourrait être du au fait que l'ancienne URL ne comportait pas de www ?

    Un énorme merci d'avance !
     
  2. loubet
    loubet WRInaute impliqué
    Inscrit:
    19 Février 2003
    Messages:
    793
    J'aime reçus:
    0
    si le domaine à conserver est celui sans www, il faut enlever la ligne :
    RewriteCond %{HTTP_HOST} nouveausiteavecdomaineidentique\.com [NC]

    si le domaine à conserver est celui sans www, il ne faut pas mettre les www dans les lignes redirect 301.
     
  3. zepokpok
    zepokpok Nouveau WRInaute
    Inscrit:
    12 Janvier 2013
    Messages:
    21
    J'aime reçus:
    0
    Merci de ta réponse mais tu dis dans les deux cas "sans www", j'en ai déduit que le premier était "avec www" mais de toute façon j'ai essayé les deux et rien ne fonctionne.

    Quoiqu'il arrive de toute façon j'ai besoin du
    RewriteRule ^(.*) http://nouveausiteavecdomaineidentique\.com/$1 [L,R=301]
    qui renvoie les url sans www vers celui avec les www pour éviter le duplicate content
    et si je le laisse j'ai une boucle infinie.

    Comment inclure les deux ?

    Sachant que ma redirection ne fonctionne jamais même si j'épure le site.

    Merci à vous !
     
  4. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 196
    J'aime reçus:
    1
    inverse l'ordre ....
    Cette condition :
    RewriteCond %{HTTP_HOST} !^www\.nouveausiteavecdomaineidentique\.com [NC]
    renvoie textuellement "tout ce qui n'est pas ton nouveau site" sur la règle derrière "RewriteRule ..." qui elle est terminale ([L]). donc tu risque pas d'accéder aux règle derrières.
     
  5. zepokpok
    zepokpok Nouveau WRInaute
    Inscrit:
    12 Janvier 2013
    Messages:
    21
    J'aime reçus:
    0
    Salut, merci de ton aide,

    J'ai fait quelques changements car de toute façon le sans www ne redirigeait pas vers le www.
    j'ai inversé l'ordre comme tu le proposes mais rien à faire, ça ne fonctionne pas :

    Code:
    SetEnv PHP_VER 5_TEST
    
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=2 http://www.nouveausiteavecdomaineidentique.com
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=789&theme=1 http://www.nouveausiteavecdomaineidentique.com/les-chambres-3-cles.html
    
    DirectoryIndex index.php
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .\.html$ index.php [L]
    RewriteCond %{HTTP_HOST} nouveausiteavecdomaineidentique\.com [NC]
    RewriteCond %{HTTP_HOST} !^www\.nouveausiteavecdomaineidentique\.com [NC]
    RewriteRule ^(.*) http://www.nouveausiteavecdomaineidentique\.com/$1 [L,R=301]
    
    ErrorDocument 404 /index.php
    
    j'ai viré la longue liste de 301 pour l'exemple, mais elle est bien présente dans mon fichier

    Merci !

    EDIT : je n'ai pas précisé que je n'ai plus de boucles, mais les redirections 301 ne fonctionnent pas du tout (les autres oui).

    EDIT2 : J'ai trouvé pourquoi ça ne marche pas ! Mais je ne sais pas comment le résoudre.

    si j'essaie d'attraper l'ancienne url suivante qui ne possédait pas les www : http://domainequinechangepas/anciensite/pages/viewer.asp?tp=ls&ID_ELEM ... 89&theme=1 ça me redirige vers http://www.domainequinechangepas/anciensite/pages/viewer.asp?tp=ls&ID_ ... 89&theme=1, ce qui est logique, il ajoute les www comme je lui ai demandé.
    Maintenant, comment ne pas prendre seulement en compte cette dernière commande mais aussi toutes les autres ?
    Merci !
     
  6. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 196
    J'aime reçus:
    1
    Si tout fonctionne sauf les redirections en haut c'est que la syntaxe pour redirect est peut être mauvaise ....
    http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirect

    Code:
    redirect 301 /anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=2 http://www.nouveausiteavecdomaineidentique.com
    ne devrait pas être par hasard (je comprend pas ton "anciensite" dans le pathWeb) :
    Code:
    redirect 301 /pages/viewer.asp?tp=ls&ID_ELEMENT=2 http://www.nouveausiteavecdomaineidentique.com
    vérifie que le membre de gauche est bon.
    la bonne syntaxe est redirect 301 pathWeb urlWeb je ne sais pas si les paramètres GET seront pris en compte en plus ...
     
  7. zepokpok
    zepokpok Nouveau WRInaute
    Inscrit:
    12 Janvier 2013
    Messages:
    21
    J'aime reçus:
    0
  8. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 196
    J'aime reçus:
    1
    Ok donc "anciensite" figurait dans le path
    Essaye de rediriger en masse l'url "http://domaineavecadresseidentique.com/anciensite/pages/viewer.asp" vers une autre juste pour un test.
    Code:
    redirect 301 /anciensite/pages/viewer.asp http://www.domaineavecadresseidentique.com/une-url-propre.html
    Je cherche a savoir si les paramètres en GET ne sont pas la cause du souci (ça ne m'étonnerait pas).
    Si tel est le cas j'aurais peut être une solution souple a te proposer.
     
  9. zepokpok
    zepokpok Nouveau WRInaute
    Inscrit:
    12 Janvier 2013
    Messages:
    21
    J'aime reçus:
    0
    hello !
    bravo, c'est exactement ça ! (je me demande même pourquoi j'ai pas essayé avant... :()

    J'ai fait un test avec viewer.asp plutot que viewer.asp?tp=ls&ID_ELEMENT=824 et ça marche...
    Je suis preneur de ta combine oui si tu en as une !

    Un grand merci une nouvelle fois, vraiment !
     
  10. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 196
    J'aime reçus:
    1
    Bon ok ça c'est fait :D
    Le truc c'est vue que tu as pas mal de paramètres en GET, je suppose que tu dois avoir une multitude de pages de redirection il serait donc pas mal de rediriger toutes ces pages en bloc vers un script php unique qui lui composerait la redirection en dur en fonction des paramètres reçus ...

    pour faire cela "redirect 301 ..." n'est pas la bonne méthode personnellement j'utilise une réécriture sous condition à la place (j'ai donc une règle dans le htaccess par script et non par url) :

    Code:
    	# anciennes URLs  type viewer.asp
    	RewriteCond %{REQUEST_URI}  ^(.*)viewer.asp.*
    	RewriteRule ^(.*)viewer.asp(.*)$ /dossier/redirection.php [L,QSA]
    Il y a surement moyen d'alléger un peut l'écriture j'ai pas fait de test.

    le script "redirection.php" recevra donc les paramètres de la requête http (QSA > transmet à la redirection les paramètres d'URLs) il suffit de le concevoir pour réagir correctement exemple :

    PHP:
    <span class="syntaxdefault"> </span><span class="syntaxcomment">// lister toutes les URLs destination<br /></span><span class="syntaxdefault"> $newurl</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> $newurl</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]=</span><span class="syntaxstring">"nouvelle-url-1.html"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">......<br /></span><span class="syntaxdefault"> $newurl</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">101</span><span class="syntaxkeyword">]=</span><span class="syntaxstring">"nouvelle-url-101.html"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> $newurl</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">102</span><span class="syntaxkeyword">]=</span><span class="syntaxstring">"nouvelle-url-102.html"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> $newurl</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">105</span><span class="syntaxkeyword">]=</span><span class="syntaxstring">"nouvelle-url-103.html"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">......<br /><br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">// envoyer la redirection<br /></span><span class="syntaxdefault"> header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"HTTP/1.1 301 Moved Permanently"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location: http://www.domaineavecadresseidentique.com/"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$newurl</span><span class="syntaxkeyword">[(int)</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'ID_ELEMENT'</span><span class="syntaxkeyword">]]);<br /></span><span class="syntaxdefault"> exit</span><span class="syntaxkeyword">();</span><span class="syntaxdefault"> </span>
     
  11. zepokpok
    zepokpok Nouveau WRInaute
    Inscrit:
    12 Janvier 2013
    Messages:
    21
    J'aime reçus:
    0
    OK super, on avance, génial !

    le lien avec redirection.php est bien fait par contre il ne m'attrape que la première partie, soit Location: http://www.domaineavecadresseidentique.com/ et me redirige vers cette portion uniquement.

    je ne suis pas du tout calé en php mais il manque une boucle non ? Comment le code php sait que telle url d'avant "viewer.asp?truc" doit aller avec $newurl[0] ou $newurl[1], etc...

    Il y a un truc qui m'échappe.

    Code:
     <?php 
    
    // lister toutes les URLs destination
     $newurl[0]="nouvellepage.html";
    
     // envoyer la redirection
     header("HTTP/1.1 301 Moved Permanently");
     header("Location: http://www.domaineavecadresseidentique.com/".$newurl[(int)$_GET['ID_ELEMENT']]);
     exit(); 
     ?>
    Merci mille fois encore :D
     
  12. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 196
    J'aime reçus:
    1
    Je comprend pas bien est ce a dire que là tu redirige tout vers l'accueil uniquement ?

    Avec la partie en gras
    header("Location: http://www.domaineavecadresseidentique.com/".$newurl[(int)$_GET['ID_ELEMENT']]);

    $_GET['ID_ELEMENT'] est une variable qui est dans tes vieilles urls sous la forme :
    -http://domainequinechangepas/anciensite/pages/viewer.asp?tp=ls&ID_ELEMENT=789&theme=1
    donc théoriquement si tu envoie cette urls et que $newurl[789]="toto.html" la fonction header devrait te rediriger vers
    -http://www.domaineavecadresseidentique.com/toto.htm

    Si tu tombe toujours a l'accueil il conviens de faire un echo dans le script en désactivant la redirection (header location) afin d'afficher le paramètre pour voir si il est passé ou pas voir corrompu. (tu met juste un echo $_GET['ID_ELEMENT']; dans "redirection.php" afin de voir si tu as bien un int qui arrive au script)

    (int) est la pour caster en intéger au cas ou un margoulin tape une connerie dans l'url ce qui produira 0 et renverra vers l'accueil.
    $newurl[(int)$_GET['ID_ELEMENT']] est donc la variable tableau $newurl assortie d'un indice entier correspondant a une des urls initialisées en amont.
     
  13. zepokpok
    zepokpok Nouveau WRInaute
    Inscrit:
    12 Janvier 2013
    Messages:
    21
    J'aime reçus:
    0
    ça marche !!

    Merci mille fois encore !

    Je n'avais pas saisi que je devais glisser l'ID de la page avec $newurl[id de la page à récupérer], je ne suis pas super à l'aise avec le code en général.

    Merci encore, tu me résous un sacré souci (depuis de longs jours !).

    je t'envoie mes coordonnées en MP, je serais ravi de te renvoyer l'ascenseur à l'occasion.
     
Chargement...
Similar Threads - problème boucle redirection Forum Date
probleme de redirection puis pb boucle URL Rewriting et .htaccess 26 Mars 2015
Probleme avec fopen et boucle Développement d'un site Web ou d'une appli mobile 22 Janvier 2011
Problème sur les redirections de pages profondes URL Rewriting et .htaccess 4 Décembre 2019
Problème de référencement et ajout sitemaps Problèmes de référencement spécifiques à vos sites 26 Novembre 2019
Problème affichage des derniers articles wordpress page accueil Administration d'un site Web 20 Novembre 2019
Gestion de cookies problème directives CNIL. Administration d'un site Web 15 Novembre 2019
Search Console URL exclues : comment résoudre le problème ? Problèmes de référencement spécifiques à vos sites 15 Novembre 2019
Search Console Premier référencement et problèmes Débuter en référencement 11 Novembre 2019
Test d'optimisation mobile : Problèmes de chargement de la page Débuter en référencement 10 Novembre 2019
Problème sur une source Referral Googleads.g.doubleclick.net Google Analytics 7 Novembre 2019
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice