Help: Problème de Redirection .htaccess suite erreur noms de pages

Discussion dans 'Netlinking, backlinks, liens et redirections' créé par wordmaster, 6 Septembre 2015.

Tags:
  1. wordmaster
    wordmaster Nouveau WRInaute
    Inscrit:
    6 Septembre 2015
    Messages:
    6
    J'aime reçus:
    0
    Bonjour à tous,
    Après avoir cherché dans le forum, je n'ai rien vu qui corresponde à mon problème, donc j'ouvre un nouveau sujet pour faire appel à vos bonnes âmes. Mes excuses si le sujet existe déjà ailleurs. :?


    Quand j'ai codé mon site (HTML+CSS), j'ai fait l'erreur de débutant (ce que je suis :oops: ) de mettre des espaces dans les noms de mes pages web.

    Je sais que c'est une belle bavure, mais j'étais seul et sans accès internet quand j'ai dû faire ce site, donc j'ai improvisé avec des livres pour apprendre, faute de mieux, et ils ne mentionnaient pas les problèmes liés aux caractères spéciaux. L'erreur est faite, et maintenant il faut que je répare. Je dépends professionnellement de ce site et je ne peux vraiment pas me permettre de perdre du ranking.

    Avec l'expérience, et voulant corriger diverses erreurs (changement de nom de pages, redirection d'adresse sans "www" vers "www.", et redirection de Index.html vers la racine du site pour éviter les doublons) et remplacer les anciennes pages par des pages sans espaces dans les noms, j'ai tenté une redirection 301 dans le .htaccess.
    Mais les noms des pages ayant des espaces entre les mots font que les noms des pages sont retranscrits soit avec des espaces soit avec des "%20", et font que soit le .htaccess n'est pas pris en compte quand je veux rediriger vers la nouvelle page (d'où une erreur 404), soit j'obtiens une erreur 500 (merci les "%"...).

    Concrètement, mon htaccess donne ça :

    RewriteEngine on

    RewriteCond %{HTTP_HOST} ^monsite.com [NC]
    RewriteRule ^(.*)$ http://www.monsite.com/$1 [R=301,L]

    RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ (/.*)?/Index.(htm|html|php|asp|shtml)
    RewriteRule ^(.*)Index.(htm|html|php|asp|shtml)$ /$1 [R=301,L]

    Redirect 301 /Ancien nom1.html http://www.monsite.com/Nouveau-nom1.html

    Redirect 301 /Ancien nom2.html http://www.monsite.com/Nouveau-nom2.html

    Redirect 301 /Ancien nom3.html http://www.monsite.com/Nouveau-nom3.html



    Clairement le Redirect 301 ne fonctionne pas, ici, mais je ne comprends pas pourquoi. Quelle serait la bonne formulation ?

    Où me suis-je encore planté, svp ? Avez-vous une autre solution pour remplacer mes pages aux noms "mal formulés" par des nouvelles aux noms correctement formulés sans perdre mon webranking, et sans que .htaccess ne plante tout le serveur, svp ? :cry:

    Merci d'avance à ceux qui voudront bien me répondre.
     
  2. loubet
    loubet WRInaute impliqué
    Inscrit:
    19 Février 2003
    Messages:
    793
    J'aime reçus:
    0
  3. wordmaster
    wordmaster Nouveau WRInaute
    Inscrit:
    6 Septembre 2015
    Messages:
    6
    J'aime reçus:
    0
    Bonjour,
    Et merci beaucoup pour la réponse.
    Ça marche. C'est cool.

    A quoi correspondent/que signifient le "/one two three.exe", après le Redirect ? Pourquoi les guillements ?

    Ce Redirect "xxxxxxxx" équivaut-il à un redirect 301 pour Google ? Dit autrement, est-ce je risque des pénalités de ranking avec ça ?

    Donc, cela veut dire que je fais une ligne de code comme celle-ci dans le .htaccess pour chaque page existante à remplacer suite à la correction des espaces dans les noms de fichiers ?

    Enfin, si je corrige de la sorte toutes les pages et garde ce .htaccess suffisamment longtemps, je suppose que le ranking des "nouvelles pages" va finir par se substituer aux anciennes, c'est bien ça ?

    Merci d'avance.
     
  4. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    3 629
    J'aime reçus:
    66
    Le / indique que tu pars de la racine du domaine

    et pour le reste, oui, c'est à peu près ça

    Perso je préfère coder les redirection de la sorte :

    RewriteCond %{REQUEST_URI} ^/anciennepage.html$
    RewriteRule ^anciennepage.html$ http://example.com/nouvellepage.html [R=301,L]

    Ainsi je vois bien ce que je conditionne par la RewriteCond. ^ indique que ça commence par... et $ indique que ça se termine par ...
    Et dans la RewriteRule je matérialise bien le type de redirection (301)

    Mais ce n'est peut-être pas la meilleure solution pour coder un .htaccess. Enfin c'est ce que j'utilise, ça fonctionne et ça me convient parfaitement.
     
  5. wordmaster
    wordmaster Nouveau WRInaute
    Inscrit:
    6 Septembre 2015
    Messages:
    6
    J'aime reçus:
    0
    Re-Bonjour.
    Merci pour les précisions.

    Pourtant il y a un problème: Dès que je mets plus d'une redirection (j'en ai 45 pour rediriger toutes les pages renommées), avec l'une ou l'autre des deux méthodes précédemment proposées, j'obtiens une erreur 404...!

    Que se passe-t-il ?

    Pour le cas où, j'ai essayé avec et sans ajout d'un / après ta RewriteRule, comme ci-après, mais pas mieux...

    RewriteCond %{REQUEST_URI} ^/anciennepage.html$
    RewriteRule ^anciennepage.html$ http://example.com/nouvellepage.html [R=301,L]

    OU

    RewriteCond %{REQUEST_URI} ^/anciennepage.html$
    RewriteRule ^/anciennepage.html$ http://example.com/nouvellepage.html [R=301,L]

    Je ne comprends plus rien. Pour être sûr de ne rien louper, dans tes modèles, je ne dois changer que anciennepage.html et example.com/nouvellepage.html par mon ancienne page et la nouvelle, respectivement, et ne rien changer dans {REQUEST_URI}, n'est-ce pas ?

    Help. Et désolé d'être un boulet. :oops:
     
  6. jeanluc
    jeanluc WRInaute accro
    Inscrit:
    3 Mai 2004
    Messages:
    2 883
    J'aime reçus:
    0
    Bonjour,

    Ces
    Code:
    RewriteCond %{REQUEST_URI} ^/anciennepage.html$
    embrouillent tout.

    Essaie avec seulement des lignes comme ceci:
    Code:
    RewriteRule ^anciennepage1.html$ http://example.com/nouvellepage1.html [R=301,L]
    RewriteRule ^anciennepage2.html$ http://example.com/nouvellepage2.html [R=301,L]
    RewriteRule ^anciennepage3.html$ http://example.com/nouvellepage3.html [R=301,L]
    RewriteRule ^anciennepage\ avec\ des\ espaces.html$ http://example.com/nouvellepage4.html [R=301,L]
    Les \ (backslash, suivi d'un espace), c'est quand il y a des espaces dans l'ancienne URL.

    Jean-Luc
     
  7. wordmaster
    wordmaster Nouveau WRInaute
    Inscrit:
    6 Septembre 2015
    Messages:
    6
    J'aime reçus:
    0
    Merci Jean-Luc,
    Je teste tout de suite. :)

    Une question de détail au passage:
    Si l'équivalent d'un espace est un \ suivi d'un espace, quel est l'équivalent d'un apostrophe, stp ?

    Merci.
     
  8. wordmaster
    wordmaster Nouveau WRInaute
    Inscrit:
    6 Septembre 2015
    Messages:
    6
    J'aime reçus:
    0
    Bon, eh bien, ça ne marche pas non plus, Jean-Luc...

    Merci quand même pour la suggestion. Au passage, j'en ai profité pour changer tous les noms de pages en remplaçant les espaces par des tirets, pour éviter de futurs soucis.

    Toujours en erreur 404 quand on essaie de passer par le lien de l'ancienne page qu'affiche google lorsqu'on me cherche par mots clefs...

    Pour l'instant, mon .htaccess a à peu près cette tête:

    RewriteEngine on

    RewriteCond %{HTTP-HOST} ^monsite.com [NC]
    RewriteRule ^(.*)$ http://www.monsite.com/$1 [R=301,L]

    RewriteCond %{THE-REQUEST} ^(GET|POST|HEAD)\ (/.*)?/Index.(htm|html|php|asp|shtml)
    RewriteRule ^(.*)Index.(htm|html|php|asp|shtml)$ /$1 [R=301,L]

    RewriteRule ^/Vos\ xxxx.html$ http://www.monsite.com/Votre-xxxx.html [R=301,L]

    RewriteRule ^/Your\ xxxx.html$ http://www.monsite.com/Your-xxxx.html [R=301,L]

    RewriteRule ^/Une\ xxx\ xxx.html$ http://www.monsite.com/Une-xxx-x-xxx.html [R=301,L]

    RewriteRule ^/A\ xxx\ xx\ xxx.html$ http://www.monsite.com/A-xxx-xx-xxx.html [R=301,L]


    etc... (40 autres redirections.)

    Une idée de pourquoi ça ne marche pas, svp ?

    Merci d'avance.
     
  9. jeanluc
    jeanluc WRInaute accro
    Inscrit:
    3 Mai 2004
    Messages:
    2 883
    J'aime reçus:
    0
    Puisque
    Code:
    RewriteRule ^/Vos\ xxxx.html$ http://www.monsite.com/Votre-xxxx.html [R=301,L]
    ne marche pas, essaie
    Code:
    RewriteRule ^Vos\ xxxx.html$ http://www.monsite.com/Votre-xxxx.html [R=301,L]
    Et si ça ne marche toujours pas, tu peux aussi essayer
    Code:
    RewriteRule "Vos xxxx.html" http://www.monsite.com/Votre-xxxx.html [R=301,L]
    Jean-Luc
     
  10. wordmaster
    wordmaster Nouveau WRInaute
    Inscrit:
    6 Septembre 2015
    Messages:
    6
    J'aime reçus:
    0
    Bonjour JeanLux,

    Et merci pour les dernières suggestions.

    La deuxième de tes dernières solutions a été la bonne (RewriteRule ^Vos\ xxxx.html$ http://www.monsite.com/Votre-xxxx.html [R=301,L]).

    Curieux que les autres ne fonctionnent pas.

    Problème réglé, donc c'est bon. Merci infiniment à toi et à Loubet et Indigene, qui ont aussi eu la gentillesse de m'aider. :wink:
     
Chargement...
Similar Threads - Problème Redirection htaccess Forum Date
htaccess avec redirection problème sécurisation URL Rewriting et .htaccess 16 Juin 2018
Problème de redirection .htaccess dans un seul cas URL Rewriting et .htaccess 7 Avril 2018
Probleme de redirection de lien avec htaccess URL Rewriting et .htaccess 20 Juin 2015
Probleme avec certaines de mes redirections permanente (htaccess) Netlinking, backlinks, liens et redirections 23 Janvier 2015
Probleme Redirection 301 dans htaccess Joomla 3.0 Débuter en référencement 15 Juin 2013
Problème de redirection sur mon htaccess URL Rewriting et .htaccess 9 Novembre 2011
Problème de redirection d'une page dynamique par htaccess URL Rewriting et .htaccess 10 Mai 2011
Problème redirection htaccess URL Rewriting et .htaccess 5 Mai 2011
Problème redirection htaccess Débuter en référencement 15 Avril 2011
Problème de redirection avec htaccess Netlinking, backlinks, liens et redirections 5 Avril 2011
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice