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) .
Réponses:
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:
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%2a
lorsqu'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.
la source
Oui, car c'est un personnage réservé.
À partir d'ici: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html
ÉDITER:
À partir d'ici: http://labs.apache.org/webarch/uri/rfc/rfc3986.html#modifications
la source
*
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?