Caractères spéciaux qui passent dans l'URL (et les autres!)

WRInaute discret
Bonjour,

Je n'ai pas trouvé un article qui explique quels sont les caractères spéciaux qui passent dans une URL rewrité. Je veux dire, j'ai trouvé des messages parlant du cas de tel ou tel caractère mais rien de plus global.

Voici en vrac une liste de caractères spéciaux, comme dans qui veut gagner des millions, ne répondent que ceux qui savent :D pour un tel ou tel caractère :
+
-
_
,
.
%3A
%E8
%2C
%21
%B0
...
etc

Bref, la fonction url_encode en PHP de n'importe quel caractère suffit-elle à rendre une URL lisible par Google? Ou faut-il remplacer tous les caractères spéciaux par des - ou _ ou même des + ?

Merci d'avance!
 
WRInaute occasionnel
url_encode est normalement prévue pour ça, a priori tous les characteres speciaux sont codés correctement avec cette fonction.
 
WRInaute discret
Je ne m'inquiète pas spécialement pour l'encodage, je m'inquiète pour le bon référencement de ces pages par les googlebots...

Quelqu'un a des exemples de pages référencées dans Google avec une URL de type :
htt_p:/ww_.monsite.com/Appartements%2C+maisons%2C+ch%E2teaux%2C+%E0+vendre+ou+%E0+louer+%3A+tout+l+immobilier+sur+le+figaro.fr__.html

Merci d'avance!
 
WRInaute accro
fais un e recherche dans ce forum, la question à été abordé et un membre donnait se sresultats avec des caracteres speciaux, mais j ai pas le temps de chercher là, journée terminée :)
 
WRInaute discret
Je suis désolé Kiwi, mais c'est ce que j'ai fait mais je n'ai pas du tomber sur le bon article... J'ai recherché URL caractères spéciaux
 
WRInaute discret
Re: Caractères spéciaux qui passent dans l'URL (et les autre

puppetMaster a dit:
Je n'ai pas trouvé un article qui explique quels sont les caractères spéciaux qui passent dans une URL rewrité.

Bref, la fonction url_encode en PHP de n'importe quel caractère suffit-elle à rendre une URL lisible par Google? Ou faut-il remplacer tous les caractères spéciaux par des - ou _ ou même des + ?
Merci d'avance!

J'ai un site ou je n'ai que de l'URL rewriting et des caractères spéciaux dans les URL rewritées. Ca fonctionne bien mais je cherche encore à savoir ce qui passe le mieux du point de vue de l'optimisation ( ( iso-8859-1/utf-8 ) / urlencode) ...

Certains caractères ont un problème d'encodage sous PHP, comme le œ, à réencoder à la main dans tes scripts au cas par cas.

C'est assez fastidieux d'encoder/décoder proprement pour les autres fonctions que l'affichage pûr (pour les requetes SQL ou pour l'optimisation des URLs par exemple).

Il faut qu'Apache et PHP soient configurés tous les deux pour le même jeu de caractères, sous peine d'être obligé de coder deux fois plus rien que pour la translation de caractères.

Les URL apparaissent bien dans leur format encodé sur Google mais je ne suis pas certain de l'apport de cette technique du poit de vue référencement.
 
WRInaute discret
Tu veux dire que tes pages sont référencées dans google?

peux-tu donner un exemple d'URL avec plein de caractères spéciaux référencé, stp?

merci!
 
WRInaute discret
Oui en effet, tu as des caractères spéciaux dans tes URL et tes pages sont référencées...

Que penses-tu du référencement d'une page avec cet URL :
ww_.monsite.com/Station+de+ski+du+Tourmalet+%3A+Bareges+La+Mongie%2C+la+plus+grande+des+Pyr%E9n%E9es+fran%E7aises__.html

j'ai l'impression que les + ou encore les %E9 (é), %3A :)), %2C (,), %E7 (ç) risquent de poser pb...

merci!
 
WRInaute discret
puppetMaster a dit:
Oui en effet, tu as des caractères spéciaux dans tes URL et tes pages sont référencées...

Que penses-tu du référencement d'une page avec cet URL :
ww_.monsite.com/Station+de+ski+du+Tourmalet+%3A+Bareges+La+Mongie%2C+la+plus+grande+des+Pyr%E9n%E9es+fran%E7aises__.html

j'ai l'impression que les + ou encore les %E9 (é), %3A :)), %2C (,), %E7 (ç) risquent de poser pb...
merci!

Je n'ai eu aucun problème avec les lettres accentuées.
Je pense que le + sera interprété comme un espace.

Le : (double point) ne peut pas être utilisé, c'est un caractère réservé à l'indication du port de communication dans une URL (cf. protocole HTTP) !

Il me semble bien que le ç passe mais je n'en suis pas certain.
Pour la virgule, je n'ai pas testé.

A priori, en se cassant un peu la tête, tous les caractères devraient passer, sauf les caractères réservés par le protocole HTTP :

- slash
- antislash
- double point
- at (@)

Bien qu'en jouant avec les escapes ...
 
WRInaute discret
Bonjour,

Y a t-il un script PHP qui puissent remplacer les caractères spéciaux par des _ _ _ _ ou des - - - - afin d'avoir des URL plus propre ?
Merci
 
WRInaute accro
Re: Caractères spéciaux qui passent dans l'URL (et les autre

Bonjour puppetMaster,

Les caractères spéciaux dans l'URL n'empêchent pas le référencement, mais ils le perturbent, parce que, si dans ton URL, tu as Pyr%E9n%E9es+fran%E7aises, Google n'y reconnaîtra pas Pyrénées françaises, mais Pyr, E9n, E9es, fran et E7aises.

A mon avis, la bonne technique n'est pas de remplacer les é, è, ç,... par des "_" ou des "-", mais par e, e, c,... (comme ça Google reconnaît les mots).

Jean-Luc
 
WRInaute impliqué
snowalpes a dit:
Bonjour,

Y a t-il un script PHP qui puissent remplacer les caractères spéciaux par des _ _ _ _ ou des - - - - afin d'avoir des URL plus propre ?
Merci

Dans la doc PHP, plusieurs personnes proposent des solutions pour remplacer les caractères accentués par leur aquivalent non accentué.
 
WRInaute discret
Merci, de votre aide, j'ai finalement trouvé une solution :

Code:
//sans accents
function retireAccents($txt) {
  $masque = "[?!]";
  $txt = eregi_replace($masque, "", $txt);

  $masque = "[àâä@]";
  $txt = eregi_replace($masque, "a", $txt);

  $masque = "[éèêë€]";
  $txt = eregi_replace($masque, "e", $txt);

  $masque = "[ïì]";
  $txt = eregi_replace($masque, "i", $txt);

  $masque = "[ôö]";
  $txt = eregi_replace($masque, "o", $txt);

  $masque = "[ùûü]";
  $txt = eregi_replace($masque, "u", $txt);

  $masque = "[ç]";
  $txt = eregi_replace($masque, "c", $txt);

  $masque = "[&]";
  $txt = eregi_replace($masque, "et", $txt);

  $masque = " +";
  $txt = eregi_replace($masque, "_", $txt);

  return(strtolower($txt));
  }
echo retireAccents($ton_texte);
:wink:
 
WRInaute passionné
Moui, pas mal, mais tu devrais, encore une fois, préférer le tiret au blanc souligné. (google ne différencie pas les mots séparés par un blanc souligné).
 
WRInaute discret
Non ? c'est vrai ?

Toutes mes URL sont mot_clef_encore_mots_clefs ... ca marche pas ?

C'est grave, car je dois encore tt rechanger dans mes regles rewriting !!
 
WRInaute discret
Merci de vos réponses.

Je viens de ,donc, re-modifier toutes mes URL...
J'epesre que je ne serai pas victime de sandboxage... ;-)
 
Discussions similaires
Haut