Balises title en double à cause de l'espace (%20 et +)

Nouveau WRInaute
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 !
 
Nouveau WRInaute
arnaudmn a dit:
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 https://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.
 
WRInaute passionné
Via le htaccess :
Code:
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.
 
Nouveau WRInaute
arnaudmn a dit:
Via le htaccess :
Code:
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:
RewriteRule ^([^\/]+),([0-9]+)\.html$ fiche.php?titre=$1&id=$2 [L]
 
WRInaute passionné
Dans fiche.php, au début, un truc du style :

Code:
$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 :) )
 
Nouveau WRInaute
arnaudmn a dit:
Dans fiche.php, au début, un truc du style :

Code:
$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 :(
 
WRInaute passionné
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:
<?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.
 
Nouveau WRInaute
arnaudmn a dit:
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:
<?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.
 
Membre Honoré
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.
 
Discussions similaires
Haut