Existe-t-il des raisons pour lesquelles je ne devrais pas utiliser d'astérisque (*
) dans une URL?
Background:
Avec les astérisques, je pourrais fournir ces URL agréables et conviviales (ou que pensez-vous ??):
example.com/some/folder/search-phrase*
signifie recherche de pages avec des noms commençant par "search-phrase", situées dans/un/dossier /.
example.com/some/**/*search-phrase*
signifie recherche d'une page comportant une "expression de recherche" n'importe où dans son nom.
example.com/some/folder/*
signifie liste toutes les pages de/some/folder/(plutôt que d'afficher la page/some/folder/index).
Utiliser un Astérix dans votre URL n'est probablement pas une bonne idée, en grande partie parce que:
Utiliser un astérisque (*) dans une URL (et oui, je sais que c'est ce que vous vouliez dire tout du long) n'est également pas une si bonne 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 de gens 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 saurais dire ce que tous vos exemples ont voulu dire avant d'avoir lu vos descriptions.)
Non seulement cela, mais il pourrait y avoir d'autres 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 les variables 'find' et 'where' pour indiquer à votre méthode ce qu'il doit rechercher où:
Rechercher les pages commençant par 'search phrase' dans /some/folder/
:
example.com/some/folder/?find=search-phrase&where=start
Trouver des pages avec "phrase 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 loin plus commune 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'aspect des chaînes de requête, vous pouvez ajouter un nom de méthode appelé "search", puis utiliser les deux blocs suivants comme variables "find" et "where". 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 rechercher le mot clé "search" dans votre chemin d'URL et de déclencher la méthode de recherche en utilisant les deux segments de chemin suivants comme variables.
UPDATE: 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 du 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 les annonces archivées à partir de toutes les dates de google.com, plutôt que de pages comportant une date donnée (deuxième exemple). Il est intéressant de noter que je ne peux pas créer de lien vers la page en direct ici, car le site Stack Exchange code le caractère *
en tant que %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 recherchez des exemples d'autres sites adoptant des astérisques dans leurs URL, c'est le premier que j'ai vu.
Oui, car c'est un personnage réservé.
Autres caractères réservés
L'astérisque ("*", ASCII 2A hex) et le point d'exclamation ("!", ASCII 21 hex) ont une signification particulière dans des schémas spécifiques.
À partir d'ici: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html
MODIFIER:
La section 2, relative aux caractères, a été réécrite pour expliquer quels caractères sont réservés, quand ils le sont et pourquoi ils le sont, même s'ils ne sont pas utilisés comme délimiteurs par la syntaxe générique. Les caractères de la marque qui sont généralement difficiles à décoder, y compris le point d'exclamation ("!"), L'astérisque ("*"), les guillemets simples ("'") et les parenthèses ouvertes et fermées. ("(" et ")"), ont été déplacés du jeu 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 schémas.
À partir d'ici: http://labs.Apache.org/webarch/uri/rfc/rfc3986.html#modifications