Aller au contenu

Redirection délicate


Sujets conseillés

Je dois éffectuer une redirection un peu délicate et là je bloque, mais je vous explique d'abord la raison:

j'avais fait une fausse manip de rewriting que je n'ai pas vu tout suite, et les urls étaient insensées car des fois j'obtenais des chose du style:

www.ndd.tld/jeux-nouveautAs-s-122.html

créée par le titre "jeux nouveautés"

J'ai donc corrigé mon rewriting et maintenant les urls générées sont donc:

www.ndd.tld/jeux-nouveautes-s-122.html

Mais le problème est que les deux sorte d'urls ont eu le temps d'être indexées par les moteurs de recherche et ainsi tout les pages de détails se retrouvent en duplicate dans les moteurs.

Lorsque je me suis apercu de l'erreur j'aurais du rediriger en jouant sur la variable "-s-" mais n'y ai absolument pas pensé !!

Maintenant j'essaie de redirigé sur une autre lettre justement mais en jouant seulement sur la lettre et l'ID, je m'explique

le top serait de détecter -s-ID.html et le rediriger sur -d-ID.html mais le .htaccess demande une urls complète dans la seconde partie du rewrite ce qui ne change rien puisque je redirige nouveautAs-s-122.html sur nouveautAs-d-122.html

Assez dur à expliquer alors le bout de code parlera mieux!

D'origine:

RewriteRule   ^(.*)-s-([0-9]*).html$   single.php?id=$2 [L]

Ma facon:

RewriteRule   ^(.*)-s-([0-9]*).html$   http://www.ndd.tld/$1-d-$2.html  [L,R=301]
RewriteRule ^(.*)-d-([0-9]*).html$ single.php?id=$2 [L]

ce que je désire mais qui ne fonctionne pas:

RewriteRule   ^-s-([0-9]*).html$   -d-$1.html  [L,R=301]
RewriteRule ^(.*)-d-([0-9]*).html$ single.php?id=$2 [L]

En gros je cherche une redirection grace à l'ID pour delete ce fameux dupplicate !!

Lien vers le commentaire
Partager sur d’autres sites

Ma facon:

RewriteRule   ^(.*)-s-([0-9]*).html$   http://www.ndd.tld/$1-d-$2.html  [L,R=301]
RewriteRule ^(.*)-d-([0-9]*).html$ single.php?id=$2 [L]

ce que je désire mais qui ne fonctionne pas:

RewriteRule   ^-s-([0-9]*).html$   -d-$1.html  [L,R=301]
RewriteRule ^(.*)-d-([0-9]*).html$ single.php?id=$2 [L]

En gros je cherche une redirection grace à l'ID pour delete ce fameux dupplicate !!

Il est logique que la deuxième règle ne fonctionne pas. Tu n'as aucune URL qui commence par -s-

La première règle est correcte et je ne vois pas ce que tu lui reproche ???

Lien vers le commentaire
Partager sur d’autres sites

Oui je sais que la première règle est correct mais elle ne me sert strictement à rien car toujours dans l'exemple cité j'aurais donc les redirections suivantes:

ndd.tld/jeux-nouveautAs-s-122.html vers ndd.tld/jeux-nouveautAs-d-122.html et aussi

ndd.tld/jeux-nouveautes-s-122.html vers ndd.tld/jeux-nouveautes-d-122.html

J'aurais donc toujours mes urls dupliquées mais avec la variable "d" au lieu de "s" ce qui ne m'avance absolument en rien, c'est pour cela que je souhaite effectuer la redirection a partir de la variable.

Donc je voie pas trop comment réussir à faire une tel chose !

Lien vers le commentaire
Partager sur d’autres sites

A part en utilisant un RewriteMap, pas de miracle.

Et pour cela il faut que ton site soit sur un serveur dédié t'appartenant (il FAUT obligatoirement ajouter cela dans le httpd.conf !)

Lien vers le commentaire
Partager sur d’autres sites

Je ne comprends pas tout ce qui est dit dans ce fil:

- pourquoi faut-il remplacer les "-s-" par des "-d-" ? A mon sens, cela ne fait que compliquer les choses.

- je suppose que le "A" remplace principalement des "e". Si le A majuscule n'est normalement pas utilisé dans tes URL, tu peux créer une règle qui remplace tout A majuscule par un e minuscule, quitte à ajouter quelques règles particulières pour les cas où "A" remplacerait un "a" ou une autre lettre.

Est-ce qu'il y a quelque chose de gros comme une maison qui m'échappe ?

Jean-Luc

Lien vers le commentaire
Partager sur d’autres sites

Oui en fait le A est un exemple, car a un moment le rewrite avait une si gros faute qu'il faisait n'importe quoi, des fois il remplaçait par des A,-,--, et d'autres chars bizarre mais dans le fond ton idée n'est pas bête, je vais voir si je peut trouver une certains cohérence et appliquer ta suggestion ;)

Lien vers le commentaire
Partager sur d’autres sites

A mon avis, c'est parce que les caractères de l'URL sont codés en UTF-8 ...

Tu devrais, s'il n'y a pas trop de liens, utiliser utf8_decode() sur toutes tes URLs pour faire une table de correspondance UTF-8 -> ISO (single byte)

Mais là encore ce ne serait pas le "top" car tu aurais des caractères accentués dans l'URL.

Donc ensuite, tu auras besoin d'une moulinette supplémentaire pour convertir ces caractères accentués en version pur ASCII é->e, à->a etc...

Mais cela ne sera pas possible dans le .htaccess. C'est pour cela que je te suggérais d'utiliser un RewriteMap

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...