Puis-je utiliser des astérisques dans les URL?


13

Y a-t-il des raisons pour lesquelles je ne devrais pas utiliser d'astérisque ( *) dans une URL?

Contexte:

Avec des astérisques, je pourrais fournir ces URL agréables et conviviales (ou qu'en pensez-vous ??):

  • example.com/some/folder/search-phrase*
    signifie rechercher des pages dont le nom commence par "phrase-recherche", situé dans / certains / dossier / .

  • example.com/some/**/*search-phrase*
    signifie rechercher n'importe quelle page avec "expression de recherche" n'importe où dans son nom .

  • example.com/some/folder/*
    signifie lister toutes les pages dans / certains / dossier / (plutôt que d'afficher la page / certains / dossier / index) .



1
Voici une autre question SO similaire: une URL peut-elle avoir un astérisque? . Je ne les ai pas trouvés, car j'ai épelé Astérisque avec Astérix: - / jusqu'à ce que je sois corrigé (voir la réponse Astérix ci-dessous :-)).
KajMagnus

@KajMagnus J'ai trouvé un site pour la première fois aujourd'hui en utilisant des astérisques dans leurs URL. Voir ma réponse mise à jour ci-dessous.
Nick

Réponses:


16

Sur l'utilisation d'Astérix dans les URL

Utiliser un Astérix dans votre URL n'est probablement pas une si bonne idée, principalement parce que:

  1. Ni UTF-8 ni ASCII ne sont actuellement en mesure de désigner un astérix.
  2. Il ne serait guère plus qu'une tache dans une barre d'adresse de navigateur standard.
  3. Je doute qu'il aimerait beaucoup. Et il a des amis assez grands.
  4. C'est juste bizarre.

Sur l'utilisation des astérisques dans les URL

L'utilisation d'un astérisque (*) dans une URL (et, oui, je sais que c'est ce que vous vouliez dire tout au long) n'est pas non plus une excellente idée. Parce que c'est un caractère réservé, il n'est utilisé nulle part ailleurs; même si votre schéma d'URL vous semble convivial, peu penseront à l'essayer, et il est susceptible de donner des résultats imprévisibles car la signification des caractères génériques dans les URL est difficile à discerner. (Je ne pouvais pas dire ce que signifiaient tous vos exemples avant d'avoir lu vos descriptions.)

Non seulement cela, mais il pourrait y avoir des moyens plus sémantiques / significatifs de faire ce que vous décrivez. Par exemple, vous pouvez ajouter une chaîne de requête et utiliser une variable "find" et "where" pour indiquer à votre méthode ce qu'il faut trouver où:

Recherchez les pages commençant par «expression de recherche» dans /some/folder/:

example.com/some/folder/?find=search-phrase&where=start

Trouvez des pages avec «expression de recherche» n'importe où:

example.com/some/?find=search-phrase&where=anywhere

Pour afficher toutes les pages, j'utiliserais une méthode distincte appelée 'all' au lieu d'une chaîne de requête ou d'une syntaxe générique:

example.com/some/folder/all

La syntaxe de la chaîne de requête est beaucoup plus courante que les astérisques - regardez dans votre barre d'adresse la prochaine fois que vous effectuez une recherche Google, par exemple - et il sera probablement plus facile de coder aussi.

Enfin, si vous n'aimez pas l'apparence des chaînes de requête, vous pouvez ajouter un nom de méthode appelé «recherche», puis utiliser les deux blocs suivants comme variables «trouver» et «où». Par exemple, au lieu de:

example.com/some/folder/?find=search-phrase&where=start

Tu aurais pu:

example.com/some/folder/search/search-phrase/start

Ensuite, il vous suffit de vérifier le mot clé «recherche» dans votre chemin URL et de déclencher votre méthode de recherche en utilisant les deux segments de chemin suivants comme variables.


MISE À JOUR: J'ai trouvé mon premier astérisque dans une URL aujourd'hui. La nouvelle interface archive.org l'utilise exactement comme vous le décrivez (dans le cadre d'une fonction de recherche), à ​​la place d'un mot clé 'all'. par exemple:

http://wayback.archive.org/web/*/http://google.com

au lieu de

http://web.archive.org/web/20040214050058/http://www.google.com/

Le premier exemple renvoie des listes archivées de toutes les dates pour google.com, plutôt que seulement des pages d'une certaine date (deuxième exemple). Fait intéressant, je ne peux pas créer de lien vers la page en direct ici, car le site Stack Exchange code le *personnage comme %2alorsqu'il apparaît dans les URL, ce qui donne un 404 de archive.org. (Peut-être une autre raison de ne pas utiliser d'astérisques dans les URL.)

Je pense toujours que ce n'est pas aussi clair que «tous», mais, si vous cherchez des exemples d'autres sites adoptant des astérisques dans leurs URL, c'est le premier que j'ai vu.


Wrt Asterix : Quoi! Pensiez-vous que je voulais dire "astérisque"?
KajMagnus

Wrt Asterix : Oh, c'est pourquoi je n'ai trouvé aucune page pertinente sur StackOverflow ou Webmasters. Maintenant, j'ai trouvé 2 pages liées sur SO: Autoriser l'astérisque dans l'URL et Une URL peut-elle avoir un astérisque? - merci :-)
KajMagnus

Merci pour l'info sur la façon dont les utilisateurs finaux percevraient probablement les astérisques. Maintenant, je préférerai très probablement des chaînes de requête.
KajMagnus

(Au cas où quelqu'un s'interrogerait sur la référence à Astérix: j'ai mal orthographié Astérisque, je pensais que c'était Astérix :-))
KajMagnus

11

Oui, car c'est un personnage réservé.

Autres personnages réservés

L'astérisque ("*", hex ASCII 2A) et le point d'exclamation ("!", Hex ASCII 21) sont réservés pour une utilisation comme ayant une signification particulière dans des schémas spécifiques.

À partir d'ici: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html

ÉDITER:

La section 2, sur les caractères, a été réécrite pour expliquer quels caractères sont réservés, quand ils sont réservés, et pourquoi ils sont réservés, même lorsqu'ils ne sont pas utilisés comme délimiteurs par la syntaxe générique. Les caractères de marque qui sont généralement dangereux à décoder, y compris le point d'exclamation ("!"), L'astérisque ("*"), le guillemet simple ("'") et les parenthèses ouvrantes et fermées ("(" et ")") , ont été déplacés vers l'ensemble réservé afin de clarifier la distinction entre réservé et non réservé et, espérons-le, de répondre à la question la plus courante des concepteurs de systèmes.

À partir d'ici: http://labs.apache.org/webarch/uri/rfc/rfc3986.html#modifications


Hmm, *c'est un personnage réservé, oui. Mais c'est un sous-délimiteur , et quand je lis la spécification d'URI, il me semble que c'est bien d'utiliser des sous-délimiteurs d'une manière spécifique à l'application, dans le composant chemin de l'URI . - Est -ce que cela signifie pas qu'il est correct d'utiliser *(et aussi , par exemple @, :, +, ,) de la façon dont je l'ai fait?
KajMagnus

Je suis confus par la phrase " sont réservés pour une utilisation comme ayant une signification particulière dans des régimes spécifiques ". Puis-je ne pas définir mon propre schéma d'application spécifique? Cela pourrait-il être l'intention, avec des sous-délimitations, que les applications Web les utilisent d'une manière spécifique à l'application Web?
KajMagnus

Pour ce que ça vaut, quelqu'un dit ici que Wikipedia autorise les astérisques dans les URL et quelqu'un d'autre dit que ça va: une URL peut-elle avoir un astérisque?
KajMagnus

Vous avez demandé si vous deviez l'utiliser, pas si c'est techniquement possible ou non, et l'idée générale est qu'à moins que vous sachiez exactement ce que vous faites, vous ne devriez pas l'utiliser.
Alex

Je ne sais pas si je suis d'accord avec cette réponse générale. Une façon d'apprendre de nouvelles choses, c'est de faire quelque chose que vous ne savez pas comment cela fonctionne, et ensuite vous apprendrez et découvrirez. Comment serait notre avenir si les gens en général ne faisaient que des choses qu'ils savaient exactement comment ils travaillaient? (C'est une version pré-alpha que je publierais, donc elle n'est pas destinée à la production :-)) - Merci pour l'info et les liens quand même :-)
KajMagnus
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.