Supprimer de google mes anciennes URL (après URL rewriting)

  • Auteur de la discussion Auteur de la discussion Helldream
  • Date de début Date de début
Nouveau WRInaute
Bonjour,

J'ai mis en place un url rewriting pour un de mes site. Voici son code (il fonctionne correctement) :

Code:
Options +FollowSymlinks
RewriteEngine on

RewriteRule ^([_a-zA-Z]+)/$ /index.php?op=$1 [L]

Maintenant, j'aimerais faire des redirection (301) sur mes anciennes url, afin que google cesse de les utiliser au profit de mes adresses réécrites, et empêcher de ce fait un duplicate content...

J'ai essayé de faire ça, mais ça ne fonctionne pas :(

Code:
RewriteCond %{THE_REQUEST} !/[_a-zA-Z]+/
RewriteCond %{QUERY_STRING} ^op=([_a-zA-Z]+)$
RewriteRule ^index.php$ /%1/ [R=301]

Au lieu de m'afficher "musique/" à la place de "index.php?op=musique", il m'affiche "/musique/?op=musique" !!! Je ne pense pas être loin du résultat final, mais impossible de trouver comment retirer ce qu'il y a en trop.

Pourriez-vous me donner un coup de pouce en m'indiquant mon erreur?

Merci d'avance!
 
WRInaute accro
Bonjour et welcome sur WebRankInfo :D

C'est un vrai casse tete ce que tu essayes de faire. En php c'est nettement plus simple. C'est plus gourmand en temps machine mais tres performant pour les mises a jour avec google et... tellement plus simle a installer. Tu peux jouer avec des str_replace() et autres fonctions php pour rediriger en masse tes fichiers.

Le but est de récupérer l'URI, l'analyser et rediriger en 301 :

Un exemple :

Code:
$uri = $_SERVER["REQUEST_URI"];
$rel = strstr ($uri,'article.php');
if($rel != FALSE) {
header("Status: 301 Moved Permanently");
header("Location: http://www.monsite.com/article.html");  }
 
Nouveau WRInaute
Merci de ta réponse, mais je doute que ce soit facilement applicable. Je m'explique :

En fait, j'ai une petite partie de mon site qui utilise l'url rewriting (cela changera probablement avec le temps). Je voudrais donc rediriger mes URL que dans le cas où j'ai une url du type "index.php?op=xxxxxx", en sachant que j'ai biensûr plusieurs données possible dans "op", et que j'ai aussi des tas d'URL COMMENCANT par ça, mais qu'il ne faut pas rediriger :D

Donc hélas, ça va être assez difficile de définir les conditions de redirection. Il faudrait que je découpe l'url avec les "&", pour vérifier que je n'ai bien qu'un seul argument "op", et rien d'autre après. De plus, comme je veux retrouver ce que contient le "op" dans mon url finale, il va aussi falloir que je sorte cette partie là de l'url de départ, ce qui risque aussi d'être pas très pratique. Bref au final, je ne suis pas certain que ce sera vraiment plus simple ;)

Sans compter que là je ne donne qu'une partie des url que je dois rediriger. J'ai aussi celles là :
index.php?op=xxxx&sop=xxxx&pays_id=xxxx
et
index.php?op=xxxx&sop=xxxx&genre_id=xxxx

Les autres motifs ne doivent pas être redirigés (et oui, hélas, j'ai 36 "motifs" d'url différents, forcément à la base je ne connaissais pas l'url rewriting)... Et réécrire l'ensemble des liens serait très long (il y a plus de 150 pages différentes)!
 
WRInaute accro
36 motifs !! wooow

-->

Code:
<?php

// MOTIF 1
if(preg_match('#op=([_a-zA-Z]+)#', $buffer, $out))
// _____________redirection

?>


ca etant si tu veux passer par le moteur rewrite, ton écriture ne marchera jamais, car au moment du rewrite il attend de remplir une variable. Donc comme il ne trouve rien, par defaut il te renvoie toute la chaine de travail.
 
Nouveau WRInaute
ca etant si tu veux passer par le moteur rewrite, ton écriture ne marchera jamais, car au moment du rewrite il attend de remplir une variable. Donc comme il ne trouve rien, par defaut il te renvoie toute la chaine de travail.

Tu peux essayer de m'expliquer ça plus un détail SVP? :) Je reste persuadé que c'est possible, mais je n'ai hélas pas trouvé de documentation complète sur l'utilisation du fichier htaccess pour l'url-rewriting me permettant de comprendre mon problème :S
 
WRInaute occasionnel
Bonsoir
bon pour supprimer tes anciens url( tu fais cela si t'a plus besoin de ces liens et que tes nouvelles pages sont indexé)
dans robots.txt
ajoute cette ligne
Code:
Disallow: /index.php?*
apres inscri toi sur
http://services.google.com:8882/urlcons ... tcmd=login
si t'a pas un compte biensur
identifie toi
tu choisi apres
Remove pages, subdirectories or images using a robots.txt file.
et tu met le lien de ton robots.txt

c'est tout

Sallam
 
Nouveau WRInaute
Helldream a dit:
En fait, j'ai une petite partie de mon site qui utilise l'url rewriting (cela changera probablement avec le temps). Je voudrais donc rediriger mes URL que dans le cas où j'ai une url du type "index.php?op=xxxxxx", en sachant que j'ai biensûr plusieurs données possible dans "op", et que j'ai aussi des tas d'URL COMMENCANT par ça, mais qu'il ne faut pas rediriger :D

;) En gros j'ai des tas de pages commençant pas "index.php?" qui doivent toujours être consultable par les robots...
 
Discussions similaires
Haut