web-dev-qa-db-fra.com

Le codage d'URL crée-t-il un contenu en double?

Un expert en référencement testait mon site et a remarqué que mes URL contenaient le caractère spécial :. Il a dit que cela créerait un contenu en double, car Google interpréterait toute URL contenant : comme deux URL distinctes: une avec : et l'autre avec %3A. A-t-il raison?

6
gong

Je soupçonne que ce sont des mensonges/interprétations erronées de votre "expert en référencement" (de tels rôles n'existent pas à l'OMI). Essentiellement %3A et : sont exactement la même chose, on est simplement codé et signifie exactement la même chose, tout ce qui lit une URL le saura.

Sinon, vous pourriez faire valoir que tout caractère non alphanumérique pourrait provoquer un contenu en double car ils possèdent tous une entité encodée en URL (par exemple, %2d est -).

C'EST À DIRE:

http://webmasters.stackexchange.com/questions/31499/seo-whould-i-use-in-url

et

http://webmasters.stackexchange.com/questions/31499/seo%2dwhould%2di%2duse%2din%2durl

Les deux résolvent au même endroit, sauf que - est une URL encodée dans ce dernier et est ce qui sera honoré par les navigateurs/moteurs de recherche.

2
Dunhamzzz

Votre "expert en référencement" est peut-être un bâtard menteur, mais ce n’est probablement pas la raison. Il a absolument raison à ce sujet. C'est un cas peu connu d'Edge dans la construction d'URL.

RFC 3986 est la définition officielle du format de l'URL et des règles sur la manière de coder et de décoder une URL. Tout analyseur d'URL doit suivre cela aussi étroitement que possible pour éviter les erreurs et être interopérable avec le reste d'Internet. Cela inclut les moteurs de recherche qui, s’ils appliquent les règles de manière incorrecte, ne seront pas en mesure d’analyser ou d’indexer certaines ressources (par exemple, ils obtiendront un 404 parce qu’ils ont foiré votre URL ou que votre application interprétera de manière erronée l’URL ou la requête. chaîne).

La RFC donne des règles sur commentfaire l'encodage et le décodage en pourcent, ce que nous connaissons tous, mais explique aussi quandto faire l’encodage et le décodage, et avec quels caractères.

Notez que les moteurs de recherche normalisentURL (afin de pouvoir les comparer) mais ils ne ne déréférencent paseux. Les serveurs Web déréférencent les URL pour localiser les documents et transmettre les données décodées à votre application Web. Lorsqu'une URL est normalisée, seul un sous-ensemble de caractères codés en pourcentage est décodé. quand il est déréférencé, tousd'entre eux sont décodés.

En particulier, il spécifie comment comparer deux URL pour obtenir une équivalence (toutes les sections 6) et quels caractères doivent être décodés avant de le faire (sections 6.2.1 et 6.2.2). Nous découvrons ici que les uniquementcaractères à décoder avant de comparer les URL aux équivalences sont les caractères non réservés. Celles-ci sont définies (dans la section 2.3) comme "lettres majuscules et minuscules, chiffres décimaux, trait d'union, point, trait de soulignement et tilde". Le pourcentage d'encodage est censé empêcher /les navigateurs, les moteurs de recherche, etc., d'interpréter de manière erronée les caractères spéciaux dans les URL, mais aucun des caractères non réservés n'ayant de signification particulière dans une URL, ceux-ci peuvent être décodés. par quiconque à tout moment.

Ainsi, le %3A est pasdécodé en deux points : avant que deux URL ne soient comparées pour déterminer leur équivalence. règles inhabituelles qui s'appliquent à son utilisation dans le composant de chemin d'une URL (expliquée à la section 4.2); il ne peut pas apparaître dans le composant firstpath d'un relatifURL (mais est autorisé dans les composants suivants) car il pourrait être confondu avec une URL schème.

Pour construire des URL relatives valides avec deux-points comme premier composant de chemin, nous devons soit les encoder à l’heure, pas les autres, préfixer toutes ces URL relatives avec ./, ou renoncer entièrement à des URL ( que se passe-t-il, mais les URL relatives sont beaucoup plus courantes que vous ne le pensez).

Cette partie de la spécification d'URL pourrait nécessiter des éclaircissements, mais étant donné les circonstances, je vous recommanderais fortement, si vous allez utiliser des deux points dans vos URL, de les toujours les encoder. Cela supprime toute ambiguïté possible concernant l'équivalence d'URL et garantit que vous ne toucherez pas ce cas Edge, même si vous utilisez des URL relatives.

5
Michael Hampton