Messages: 17

Enregistré le: 4 Sep 2012

Message le Mer Mai 31, 2017 17:09

Bonjour à tous,

J'ai un petit soucis d'url référencées en double dans Google Webmaster Tools => Améliorations HTML => Balises Title en double.

Ça me liste 2 fois la même page... une fois avec dans l'url des "%20" au lieu des "+"...

/film/le+dernier+samourai,ID.html
/film/le%20dernier%20samourai,ID.html

Nul part sur mon site je n'affiche les url avec "%20". Toujours avec le "+".

Et je ne sais pas comment faire une redirection de "%20" vers "+" car "%20" et "+", quand je récupère l'url en paramètre en $_GET j'ai exactement la même chose...

Quelle est la solution ?

Merci !
Haut
9 Réponses
Messages: 1582

Enregistré le: 11 Mai 2005

Message le Mer Mai 31, 2017 17:28

Bonjour,

Je crois que c'est le problème du $_GET ... il remplace les espaces par des +, donc comme %20 est un espace, ça devient un plus dans le $_GET.
Pour les redirections, voir http://www.webrankinfo.com/dossiers/strategies-de-liens/tutoriel-redirections
... tout dépend comment est fait ton site. Sinon via le .htaccess
Haut
Messages: 17

Enregistré le: 4 Sep 2012

Message le Mer Mai 31, 2017 17:31

arnaudmn a écrit:Bonjour,

Je crois que c'est le problème du $_GET ... il remplace les espaces par des +, donc comme %20 est un espace, ça devient un plus dans le $_GET.
Pour les redirections, voir http://www.webrankinfo.com/dossiers/strategies-de-liens/tutoriel-redirections
... tout dépend comment est fait ton site. Sinon via le .htaccess


Mon site est fait à la main donc j'ai le contrôle sur tout.
Je sais bien comment fonctionnent les redirection, c'est pas le soucis. Le soucis c'est comment catcher un %20 pour le renvoyer vers le "+" :(

Ou sinon si quelqu'un a une solution via htaccess pour interdire à google de référencer les url avec des %20 dedans... car je sais pas d'ou il les sort.

Merci.
Haut
Messages: 1582

Enregistré le: 11 Mai 2005

Message le Mer Mai 31, 2017 17:42

Via le htaccess :
Code: Tout sélectionner
RewriteRule ^film/le\ dernier\ samourai,ID.html$    http://www.monsite.com/film/le+dernier+samourai,ID.html  [QSA,L]

Il faut dest "\ " à la place des espaces.
Haut
Messages: 17

Enregistré le: 4 Sep 2012

Message le Mer Mai 31, 2017 17:48

arnaudmn a écrit:Via le htaccess :
Code: Tout sélectionner
RewriteRule ^film/le\ dernier\ samourai,ID.html$    http://www.monsite.com/film/le+dernier+samourai,ID.html  [QSA,L]

Il faut dest "\ " à la place des espaces.


Merci je vois l'idée. Le soucis c'est que je vais pas pouvoir les faire un par un ^^ Y'a pas possibilité de faire ça automatiquement pour tous ?

Mon .htaccess actuel j'ai ça :

Code: Tout sélectionner
RewriteRule ^([^\/]+),([0-9]+)\.html$ fiche.php?titre=$1&id=$2 [L]
Haut
Messages: 1582

Enregistré le: 11 Mai 2005

Message le Mer Mai 31, 2017 18:02

Dans fiche.php, au début, un truc du style :

Code: Tout sélectionner
$titre = $_SERVER['REQUEST_URI'];
$nouv = str_replace(' ', '+', $titre);
if ($nouv!=$titre) {
   $url = "http://...".$nouv;
   header("Status: 301 Moved Permanently", false, 301);
   header("Location: ".$url);
   exit();
}


(j'ai pas testé, mais ça doit pas être loin :-) )
Haut
Messages: 17

Enregistré le: 4 Sep 2012

Message le Mer Mai 31, 2017 18:13

arnaudmn a écrit:Dans fiche.php, au début, un truc du style :

Code: Tout sélectionner
$titre = $_SERVER['REQUEST_URI'];
$nouv = str_replace(' ', '+', $titre);
if ($nouv!=$titre) {
   $url = "http://...".$nouv;
   header("Status: 301 Moved Permanently", false, 301);
   header("Location: ".$url);
   exit();
}


(j'ai pas testé, mais ça doit pas être loin :-) )


C'est ce que j'ai commencé par tester avant de poster ici et que j'explique au tout début. %20 quand on le récupère en $_GET c'est un espace " ". Idem le +. J'ai base64_encode les deux et vérifié que c'était bien la même chose.

Du coup, impossible avec le $_GET de différencier les deux et donc de faire une redirection :(
Haut
Messages: 1582

Enregistré le: 11 Mai 2005

Message le Mer Mai 31, 2017 18:17

Sauf que je n'ai pas mis $_GET, mais _$SERVER['REQUEST_URI'] :-)
J'ai testé, et ça fait bien la différence entre les " " et les "+" (mais pas $_GET en effet).

(j'édite mon message)
Voilà ce que j'ai fait pour tester (avec %20 pour que ça fonctionne) :

Code: Tout sélectionner
<?php
$titre = $_SERVER['REQUEST_URI'];
echo $titre.' : ';
$nouv = str_replace('%20', '+', $titre);
if ($nouv!=$titre) {
   echo 'différent';
}
else echo 'ok';
?>


Avec l'appel de la page le%20dernier%20samourai,10.html, ça marque que c'est différent. Avec le+dernier+samourai,10.html c'est identique.
Haut
Messages: 17

Enregistré le: 4 Sep 2012

Message le Mer Mai 31, 2017 18:34

arnaudmn a écrit:Sauf que je n'ai pas mis $_GET, mais _$SERVER['REQUEST_URI'] :-)
J'ai testé, et ça fait bien la différence entre les " " et les "+" (mais pas $_GET en effet).

(j'édite mon message)
Voilà ce que j'ai fait pour tester (avec %20 pour que ça fonctionne) :

Code: Tout sélectionner
<?php
$titre = $_SERVER['REQUEST_URI'];
echo $titre.' : ';
$nouv = str_replace('%20', '+', $titre);
if ($nouv!=$titre) {
   echo 'différent';
}
else echo 'ok';
?>


Avec l'appel de la page le%20dernier%20samourai,10.html, ça marque que c'est différent. Avec le+dernier+samourai,10.html c'est identique.


Effectivement o_o bizarre que ça marche avec request uri, ça fonctionne bien du coup, merci.

Je fais du coup le test sur :

str_replace('%2B','+',$_SERVER['REQUEST_URI'])
str_replace('%20','+',$_SERVER['REQUEST_URI'])

:)

J'espère juste que ça va pas casser des cas ou j'aurai des %2B.... ou %20... dans mes Url qui seraient des début de code de caractères autres.
Haut
Messages: 37923

Enregistré le: 7 Juil 2004

Message le Mer Mai 31, 2017 20:46

Bon retour,

Arnaudmn ayant déjà répondu aux questions techniques, voici un complément :
Pour les exemples il y a example.com (avec un a), ce qui vous permet d'afficher les exemples avec la balise aussi bien de code, qu'un lien normal, puisque example.com est dédié aux exemples sur les différents sites Internet. Si vous souhaitez plus d'informations à ce sujet, il suffit de visiter aussi le site qui indique son but et des informations concernant le domaine Internet pour ceux qui souhaitent savoir comment Internet fonctionne.

N'hésitez pas à vous présenter au forum : ici et entre deux messages présenter vos avis aussi sur les sujets : ici, pour aider les autres personnes de la communauté d'entraide. Vous pouvez aussi demander des avis et conseils pour votre ou vos sites Internet pour pouvoir toujours améliorer ceux-ci.

Cordialement.
Haut