corriger une erreur de redirection

Discussion dans 'URL Rewriting et .htaccess' créé par geve2009, 6 Novembre 2013.

  1. geve2009
    geve2009 Nouveau WRInaute
    Inscrit:
    14 Janvier 2011
    Messages:
    4
    J'aime reçus:
    0
    Bonsoir,
    J'ai fait une belle bourde et je me retrouve avec plein d'erreurs 404.
    J'avais des pages sur la racine de mon site. Ex: formation-access.php.
    Et j'ai voulu les déplacer dans un dossier /formation.
    J'ai utilisé le script PHP proposé dans l'article de WebRankInfo sur la redirection et j'ai placé ces codes dans les anciennes pages restées sur la racine, mais je ne sais pas pourquoi, les adresses de redirection n'ont pas pris l'extension php des fichiers.
    Du coup, quand on clique sur l'url : www.intras.fr/formation-access.php, on est redirigé vers l'url www.intras.fr/formation/formation-access
    alors que je voulais obtenir l'url complète : www.intras.fr/formation/formation-access.php
    pour arriver sur les nouvelles pages

    Je ne trouve pas moyen de corriger. J'ai tenté avec un htaccess dans le dossier formation :
    RedirectPermanent /formation-access /formation-access.php

    mais cela ne fonctionne pas.

    J'ai renvoyé un nouveau sitemap à Google, mais les erreurs 404 sont toujours présentes...


    Si quelqu''un peut m'aider à comprendre ce qui se passe, je le bénirai sur plusieurs générations :?
     
  2. Giustino
    Giustino WRInaute discret
    Inscrit:
    19 Novembre 2011
    Messages:
    141
    J'aime reçus:
    0
    Tu aurais mieux fait de passer par htaccess directement en faisant ceci:

    Code:
    RewriteEngine on
    RewriteRule ^formation-([a-z]+).php$ formation/formation-$1.php [R=301,L]
    
    Ceci aurait fait l'affaire et devrait rétablir ton problème.
    Penses à enlever toutes les choses inutiles (ou non fonctionnelles) ajoutées précédemment.
     
  3. longo600
    longo600 WRInaute passionné
    Inscrit:
    24 Février 2005
    Messages:
    2 209
    J'aime reçus:
    7
    autre solution htaccess, le redirectMatch Permanent :
    Code:
    RedirectMatch Permanent /formation/formation-access http://www.intras.fr/formation/formation-access.php
    a placer à la racine (doit aussi fonctionner dans le répertoire /formation/, au choix)
    (corrigé)
     
  4. geve2009
    geve2009 Nouveau WRInaute
    Inscrit:
    14 Janvier 2011
    Messages:
    4
    J'aime reçus:
    0
    Merci à Giustino et Longo,

    J'ai effectivement fini par créer des redirect dans un .htaccess.

    A noter une chose curieuse: j'avais laissé les anciennes pages en mettant une redirection en PHP vers les nouvelles pages. Ce code PHP de redirection était placé en haut de page et comportait un exit. Malgré cela, quand je suis allé dans les Outils pour Webmasters de Google, il a continué à comptabiliser les erreurs de balise TITLE en double sur les anciennes pages, pourtant redirigées...

    :?: Dernière question : combien de temps dois-je laisser la redirection dans le htaccess ?
    J'ai des liens provenant de sites extérieurs qui pointent vers les pages déplacées, mais je ne me vois pas les contacter un par un pour leur demander de modifier leur code...
     
  5. longo600
    longo600 WRInaute passionné
    Inscrit:
    24 Février 2005
    Messages:
    2 209
    J'aime reçus:
    7
    Il faut laisser les redirections … quasiment a vie … quelques années en tout cas.

    A savoir qu'en règle général, Apache utilise le principe de PREMIER TROUVE = PREMIER REDIRIGE (VRAI ou FAUX, ligne par ligne).
    La première ligne VRAI applique la règle, les suivantes sont ignorées. Je ne sais pas sur les autres serveurs ni en php, mais c'est comme cela dans le HTACCESS.

    C'est a dire que dans un répertoire volumineux, si vous ne voulez pas tout rediriger, vous pouvez appliquer des règles précises pour les pages très importantes, puis a la fin, une règle générique pour tout le répertoire. Les règles non appliquées avant la générique finiront par atteindre cette dernière.

    EX :
    RedirectMatch Permanent /marubrique/maville1.html -http://mondomaine/marubrique/maville1.html
    RedirectMatch Permanent /marubrique/maville2.html -http://mondomaine/marubrique/maville2.html
    RedirectMatch Permanent /marubrique/maville3.html -http://mondomaine/marubrique/maville3.html
    RedirectMatch Permanent /marubrique/(.*) -http://mondomaine/marubrique/index.html

    Si maville4 n'est pas importante, je ridiregais ainsi toutes les autres (maville5, maville6, maville7 etc) vers la racine de ma rubrique.

    le tiret devant http est juste pour le forum et il faut bien sur le retirer dans son htaccess.
     
  6. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 361
    J'aime reçus:
    2
    Uniquement avec l'instruction [L] en fin de ligne.

    Sinon au contraire, tout le fichier .htaccess est pris en compte
     
  7. longo600
    longo600 WRInaute passionné
    Inscrit:
    24 Février 2005
    Messages:
    2 209
    J'aime reçus:
    7
    Pas sur mes dédiés standard chez ovh en tout cas Marie-Aude. (sur realise2). J'ai testé et mis en place, ex :
    sur le répertoire :
    http://69-rhone.annuairefrancais.fr/cereales/vaulx-en-velin.html
    http://69-rhone.annuairefrancais.fr/cereales/ampuis-2.html
    http://69-rhone.annuairefrancais.fr/cereales/lyon.html
    http://69-rhone.annuairefrancais.fr/cereales/rillieux-la-pape.html
    et
    http://69-rhone.annuairefrancais.fr/cereales/index-100.html

    tu as bien une redirection différente pour chaque ville, et encore une autre pour tout le contenu du répertoire (placée à la fin).
    Donc, c'est bien la première instruction VRAI qui est prise en compte dans ce cas. C'est peut-être différent sur d'autres serveurs.
    Tu as raison de soulever une différence possible, il faut tester avant de mettre en production (surtout pour des gros sites).

    le fichier htaccess dans ce répertoire (réduit) :
    Code:
    RedirectMatch Permanent /cereales/lyon(.*) http://cereales.annuairefrancais.fr/lyon/index.html
    RedirectMatch Permanent /cereales/ampuis(.*) http://cereales.annuairefrancais.fr/ampuis/index.html
    RedirectMatch Permanent /cereales/vaulx-en-velin(.*) http://cereales.annuairefrancais.fr/vaulx-en-velin/index.html
    RedirectMatch Permanent /cereales/colombier-saugnieu(.*) http://cereales.annuairefrancais.fr/colombier-saugnieu/index.html
    RedirectMatch Permanent /cereales/brindas(.*) http://cereales.annuairefrancais.fr/brindas/index.html
    RedirectMatch Permanent /cereales/rillieux-la-pape(.*) http://cereales.annuairefrancais.fr/rillieux-la-pape/index.html
    RedirectMatch Permanent /cereales/decines-charpieu(.*) http://cereales.annuairefrancais.fr/decines-charpieu/index.html
    RedirectMatch Permanent /cereales/dieme(.*) http://cereales.annuairefrancais.fr/dieme/index.html
    RedirectMatch Permanent /cereales/joux(.*) http://cereales.annuairefrancais.fr/joux/index.html
    RedirectMatch Permanent /cereales/saint-appolinaire(.*) http://cereales.annuairefrancais.fr/saint-appolinaire/index.html
    RedirectMatch Permanent /cereales/saint-clement-sur-valsonne(.*) http://cereales.annuairefrancais.fr/saint-clement-sur-valsonne/index.html
    RedirectMatch Permanent /cereales/saint-marcel-l-eclaire(.*) http://cereales.annuairefrancais.fr/saint-marcel-l-eclaire/index.html
    RedirectMatch Permanent /cereales/les-sauvages(.*) http://cereales.annuairefrancais.fr/les-sauvages/index.html
    RedirectMatch Permanent /cereales/tarare(.*) http://cereales.annuairefrancais.fr/tarare/index.html
    RedirectMatch Permanent /cereales/valsonne(.*) http://cereales.annuairefrancais.fr/valsonne/index.html
    RedirectMatch Permanent /cereales/l-arbresle(.*) http://cereales.annuairefrancais.fr/l-arbresle/index.html
    RedirectMatch Permanent /cereales/bully(.*) http://cereales.annuairefrancais.fr/bully/index.html
    RedirectMatch Permanent /cereales/chevinay(.*) http://cereales.annuairefrancais.fr/chevinay/index.html
    RedirectMatch Permanent /cereales/fleurieux-sur-l-arbresle(.*) http://cereales.annuairefrancais.fr/fleurieux-sur-l-arbresle/index.html
    RedirectMatch Permanent /cereales/lentilly(.*) http://cereales.annuairefrancais.fr/lentilly/index.html
    RedirectMatch Permanent /cereales/sain-bel(.*) http://cereales.annuairefrancais.fr/sain-bel/index.html
    RedirectMatch Permanent /cereales/(.*) http://cereales.annuairefrancais.fr/69-rhone-dept/index.html
     
  8. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 361
    J'aime reçus:
    2
  9. longo600
    longo600 WRInaute passionné
    Inscrit:
    24 Février 2005
    Messages:
    2 209
    J'aime reçus:
    7
    Marie-Aude, tu veux me faire griller mes neurones ? :roll:
    je viens de tout restructurer :
    - Dept.NDD/rubrique/ville (ou index) devient
    - Rubrique.NDD/dept/ ou Rubrique.NDD/ville/

    Avec la dernière règle
    Code:
    RedirectMatch Permanent /cereales/(.*) http://cereales.annuairefrancais.fr/69-rhone-dept/index.html
    toutes les règles précédentes sont fonctionnelles si elles correspondent a VRAI, sinon, c'est cette dernière qui fait le travail.
    Si je mettais cette règle en premier, aucune des autres ne seraient prise en compte puisque la 1ere était VRAI! (je vais tester qq même).

    Dans mon cas, je veux rediriger:
    - rubriques/villex.html => rubrique/villex/index.html et
    - rubrique/index-X.html => rubrique/dept/index.html

    Tout ce qui n'est pas ville (chaque ligne htaccess) est donc département (dernière ligne htaccess),
    Donc effectivement /cereales/toto-sain-bel/index.html qui n'existe pas serait bien réécrit en http://cereales.annuairefrancais.fr/69-rhone-dept/index.html puisque tout ce qui est dans /cereales/ , si non appliqué les lignes avant, sera redirigé vers /cereales/dept/.

    Je n'ai pas compris la différence et la nécessité de mettre un L en plus? (ou en moins).
     
  10. longo600
    longo600 WRInaute passionné
    Inscrit:
    24 Février 2005
    Messages:
    2 209
    J'aime reçus:
    7
    Voilà, le test est en place :
    Code:
    RedirectMatch Permanent /cereales/(.*) http://cereales.annuairefrancais.fr/69-rhone-dept/index.html
    a été mis en 1er juste quelques minutes pour tester en réel.

    Du coup, toutes les règles suivantes ne sont pas prises en compte, puisque la première règle est VRAI sur une url par ex :
    http://69-rhone.annuairefrancais.fr/cereales/chevinay.html , je ne suis plus redirigé vers une ville, mais vers le dept .
    Si je remet cette ligne en dernier, si j'ai une ligne avec une redirection vers cette ville avant, la redirection marchera précisément pour cette ville.

    J'en déduit que la 1ère règle VRAI l'emporte sur toutes les suivantes.
    modif 19h20 => test supprimé
     
  11. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 361
    J'aime reçus:
    2
    Ce n'est pas le test qui correspond à ce que je t'ai mis.

    Si tu fais comme les newbies qui ne savent pas recopier un code informatique où va t on ?


    Ta première règle correspond à une redirection d'un sous répertoire de annuairefrançais.fr en un sous-domaine.
    A partir de ce moment, l'url réécrite ne correspond PLUS au sous répertoire initial. Il n'y a donc plus de règles VRAIES

    En revanche, et contrairement à ce que tu as dis, le htaccess ne s'arrête pas à la première règle vraie si on ne lui met pas en fin de ligne l'instruction [L]

    Donc teste
    RedirectMatch Permanent /cereales/sain-bel(.*) http://69-rhone.annuairefrancais.fr/cereales/toto-sain-bel/index.html
    RedirectMatch Permanent /cereales/toto-sain-bel(.*) http://cereales.annuairefrancais.fr/toto-sain-bel/index.html

    Et tu verras bien que les deux règles sont exécutées l'une après l'autre



    (et demandes toi pourquoi on aurait une instruction inutile)

    Teste exactement ce que je t'ai mis
     
  12. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    4 162
    J'aime reçus:
    174
    autre exemple :

    si tes règles sont les suivantes :
    Règle 1 : toutes les villes commençant par A sont renommées en B + nom de la ville
    Règle 2 : toutes les villes commençant par B sont renommées en C + nom de la ville
    Règle 3 : toutes les villes commençant par AB sont renommées en D + nom de la ville
    Règle 4 : toutes les villes commençant par BA sont renommées en E + nom de la ville
    Règle 5 : toutes les villes commençant par CB sont renommées en F + nom de la ville

    Selon tes dires, une ville telle que Abbeville sera renommée en BAbbeville et puis c'est tout.

    Ce qu'on veut te prouver c'est qu'au final ça sera FCBAbbeville

    Ensuite imagine que tu mettes (L) pour la règle 2. Le résultat final sera CBAbbeville
     
  13. longo600
    longo600 WRInaute passionné
    Inscrit:
    24 Février 2005
    Messages:
    2 209
    J'aime reçus:
    7
    Désolé, un peu surbooké et pas eut le temps de répondre dessuite.

    Je me suis mal exprimé, si la condition est vrai sur une ligne, elle est exécuté. Tu as raison de dire que les lignes suivantes sont testées quand même, même si cela n'a aucune raison d'exister, si l'on rend la règle suivante aussi VRAI a chaque fois, elle sera exécuté à chaque ligne si cette instruction est à nouveau dans le même répertoire, évidement.

    Ce que je voulais dire, c'est que si l'on a deux règles VRAI, du moment que l'on change de répertoire, ce sera la première règle qui sera prise en compte.
    C'est pratique si l'on veut déplacer certaines pages précises et en paquet toutes les autres;
    - les pages précises en 1er ligne par ligne
    - tous le reste en paquet sur tous le répertoire restant, avec une seule ligne.

    Sommes-nous d'accord?

    Je n'ai pas testé le [L] en fin de ligne pour vérifier si l'instruction arrête ou non le processus d'application des lignes, je te crois sur parole.
     
  14. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 361
    J'aime reçus:
    2
    Cette formulation induit en erreur.

    Si on a deux règles vraies, alors si la première règle fait que la seconde n'est plus vraie, seule la première sera exécutée.
    Le changement de répertoire n'a rien à voir, il est purement "anecdotique", lié à ta structure de réécriture dans ton cas précis.
     
  15. longo600
    longo600 WRInaute passionné
    Inscrit:
    24 Février 2005
    Messages:
    2 209
    J'aime reçus:
    7
    … et celle-ci aussi Marie-Aude … sourire.

    En fait, celui qui met deux règles qui peuvent êtres vraies, il peut se poser la question de laquelle sera exécutée …
    D'où mon propos bien sûr conditionnel. Je n'ai pas trouvé vraiment de réponse et d'éclaircissement sur cette question en Français.
    Est-ce la dernière ligne ou la première?

    - La première ligne vrai est donc exécutée … si l'opération rend les lignes suivantes fausses par exemple en changeant de répertoire dans lequel le fichier htaccess éventuel ne retraite pas a nouveau la redirection.
    Si la redirection reste au même niveau, et donc, est toujours concernée par le même fichier htaccess, la nouvelle url sera retraitée par le fichier htaccess.

    Selon ton exemple, en ayant comme directives de redirection :
    Code:
    RedirectMatch Permanent /cereales/sain-bel(.*) -http://NDD/cereales/page.html
    RedirectMatch Permanent /cereales/(.*) -http://NDD2/69-rhone-dept/index.html
    
    Alors là oui,en tapant -http://NDD/cereales/sain-bel.html je finirais dans NDD2. Mais ce n'est pas mon propos .

    j'ai testé le [L] en fin de ligne, attaché et en minuscule, ça ne change rien, les 2 lignes ci-dessus sont exécutée, et avec un espace ( ereales/page.html [L] ), cela met le serveur en erreur interne. Ce sont peut-être des commandes réservées au php et pas pour le htaccess, en tout cas sur mon serveur dédié OVH.
     
  16. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 361
    J'aime reçus:
    2
    Toutes les règles sont lues et évaluées à la suite les unes des autres.
    Quand une règle répond à une condition vraie, elle est appliquée
    Quand une règle répond à une condition fausse, elle n'est pas appliquée

    Si une règle n°1 est appliquée, et que l'url transformée répond ensuite à la condition de la deuxième règle, la deuxième est aussi appliquée.

    C'est pourquoi il est important de mettre le [L] car cela réduit la charge serveur en évitant de tester toutes les règles, les unes après les autres.

    Il y a énormément de documents en français qui expliquent le fonctionnement htaccess

    Par exemple celui ci http://openweb.eu.org/articles/le-fichier-htaccess qui précise bien

    ce qui veut bien dire que, a contrario, si il n'y a pas ce fameux flag [L] le serveur continue à lire et tester les autres règles
     
  17. longo600
    longo600 WRInaute passionné
    Inscrit:
    24 Février 2005
    Messages:
    2 209
    J'aime reçus:
    7
    Merci Marie-Aude de ce lien. Comme je n'ai pas l'url rewriting fonctionnelle sur mon serveur, je ne peux pas tester (c'est un peu la galère sur la gentoo modifié par ovh - et c'est plus simple sur mac).
    Dans le cas de l'url rewriting, effectivement, le [L]à la fin d'une ligne (ou [R=301,L] permet de stopper la lecture, sinon, même si une règle est vraie, la lecture se fait jusqu'à la fin du fichier htaccess, ce qui peut ralentir le serveur dans le cas de nombreuses redirections.

    J'ai donc été un peu trop imprécis en disant que les autres lignes sont ignorées, le principe que j'évoquais étais de mettre en premier les urls a rediriger une à une, puis ensuite une règle applicable a toutes les autres.
     
Chargement...
Similar Threads - corriger erreur redirection Forum Date
Corriger ou rediriger les erreurs 404 ? Débuter en référencement 19 Juillet 2017
Données structurées: corriger les erreurs Problèmes de référencement spécifiques à vos sites 21 Mai 2015
Comment corriger les erreurs W3C Débuter en référencement 21 Décembre 2014
Comment corriger des erreurs d'url détectées par le robot de google Problèmes de référencement spécifiques à vos sites 25 Avril 2014
Corriger les erreurs GWT Référencement Google 5 Juin 2012
Comment corriger une redirection 307 URL Rewriting et .htaccess 24 Février 2020
URL 404 : comment les corriger Demandes d'avis et de conseils sur vos sites 12 Octobre 2018
Comment corriger les exploitations de non-mise en cache du navigateur (PageSpeed)? Développement d'un site Web ou d'une appli mobile 22 Avril 2015
Corriger des URL introuvables Crawl et indexation Google, sitemaps 12 Janvier 2014
Corriger des caractères speciaux dans URL referencer depuis l'exterieur URL Rewriting et .htaccess 9 Août 2013