Posso usare gli asterischi negli URL?


13

Ci sono dei motivi per cui non dovrei usare un asterisco ( *) in un URL?

Sfondo:

Con gli asterischi, potrei fornire questi URL simpatici e facili da usare (o che ne pensi ??):

  • example.com/some/folder/search-phrase*
    significa cercare pagine con nomi che iniziano con "frase di ricerca", che si trova in / some / cartella / .

  • example.com/some/**/*search-phrase*
    significa cercare qualsiasi pagina con "frase di ricerca" ovunque nel suo nome .

  • example.com/some/folder/*
    significa elencare tutte le pagine in / some / cartella / (piuttosto che mostrare la pagina / some / cartella / indice) .



1
Ecco un'altra domanda SO simile: un URL può avere un asterisco? . Non li ho trovati, perché ho scritto Asterisk con Asterix: - / fino a quando non sono stato corretto (vedere la risposta Asterix di seguito :-)).
KajMagnus,

@KajMagnus Oggi ho trovato un sito per la prima volta usando asterischi nei loro URL. Vedi la mia risposta aggiornata di seguito.
Nick,

Risposte:


16

Sull'uso di Asterix negli URL

L'uso di un Asterix nel tuo URL non è probabilmente una grande idea, soprattutto perché:

  1. Né UTF-8 o ASCII sono attualmente in grado di indicare un Asterix.
  2. Sarebbe poco più che una sbavatura in una barra degli indirizzi standard del browser.
  3. Dubito che gli piacerà molto. E ha alcuni amici abbastanza grandi.
  4. È solo strano.

Su utilizzando asterischi negli URL

Usare un asterisco (*) in un URL (e, sì, so che è quello che intendevi da sempre) non è una grande idea. Perché è un personaggio riservato, non è usato altrove; anche se il tuo schema URL ti sembra facile da usare, pochi penseranno di provarlo ed è probabile che fornisca risultati imprevedibili perché il significato dei caratteri jolly negli URL è difficile da discernere. (Non riuscivo a capire cosa significassero tutti i tuoi esempi finché non ho letto le tue descrizioni.)

Non solo, ma potrebbero esserci modi più semantici / significativi per fare ciò che descrivi. Ad esempio, è possibile aggiungere una stringa di query e utilizzare una variabile "trova" e "dove" per indicare al metodo cosa trovare dove:

Trova pagine che iniziano con "frase di ricerca" in /some/folder/:

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

Trova pagine con "frase di ricerca" ovunque:

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

Per mostrare tutte le pagine, userei un metodo separato chiamato 'all' invece di una stringa di query o una sintassi jolly:

example.com/some/folder/all

La sintassi della stringa di query è molto più comune degli asterischi (ad esempio, cerca nella barra degli indirizzi la prossima volta che esegui una ricerca su Google) e probabilmente sarà anche più facile codificare.

Infine, se non ti piace l'aspetto delle stringhe di query, puoi anteporre un nome di metodo chiamato 'cerca' e quindi usare i due blocchi successivi come variabili 'trova' e 'dove'. ad es. invece di:

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

Potresti avere:

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

Quindi, devi solo cercare la parola chiave "cerca" nel tuo percorso URL e attivare il metodo di ricerca usando i due segmenti di percorso successivi come variabili.


AGGIORNAMENTO: ho trovato il mio primo asterisco in un URL oggi. La nuova interfaccia di archive.org la sta usando esattamente come descrivi (come parte di una funzione di ricerca), al posto di una parola chiave "tutto". per esempio:

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

invece di

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

Il primo esempio restituisce elenchi archiviati da tutte le date per google.com, anziché solo pagine da una determinata data (secondo esempio). È interessante notare che non riesco a collegarmi alla pagina live qui, perché il sito di Stack Exchange codifica il *carattere come %2aquando appare negli URL, il che si traduce in un 404 da archive.org. (Forse un altro motivo per non usare gli asterischi negli URL.)

Penso ancora che non sia così chiaro come "tutto", ma, se stai cercando esempi di altri siti che adottano asterischi nei loro URL, è il primo che ho visto.


Wrt Asterix : Cosa! Pensavi che intendessi "Asterisco"?
KajMagnus,

Wrt Asterix : Oh, è per questo che non ho trovato pagine pertinenti su StackOverflow o Webmaster. Ora ho trovato 2 pagine correlate su SO: consentire l'asterisco nell'URL e un URL può avere un asterisco? - grazie :-)
KajMagnus il

Grazie per le informazioni su come gli utenti finali potrebbero percepire gli asterischi. Ora preferirò molto probabilmente le stringhe di query.
KajMagnus,

(Nel caso qualcuno si chieda del riferimento ad Asterix: ho sbagliato a scrivere Asterisk, ho pensato che fosse Asterix :-))
KajMagnus,

11

Sì, perché è un personaggio riservato.

Altri personaggi riservati

L'asterisco ("*", esadecimale ASCII 2A) e il punto esclamativo ("!", Esadecimale ASCII 21) sono riservati per avere un significato speciale all'interno di schemi specifici.

Da qui: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html

MODIFICARE:

La sezione 2, sui personaggi, è stata riscritta per spiegare quali caratteri sono riservati, quando sono riservati e perché sono riservati, anche quando non sono usati come delimitatori dalla sintassi generica. I caratteri dei segni che in genere non sono sicuri da decodificare, tra cui il punto esclamativo ("!"), L'asterisco ("*"), le virgolette singole ("'") e le parentesi aperte e chiuse ("(" e ")") , sono stati spostati sul set riservato al fine di chiarire la distinzione tra riservato e senza prenotazione e, si spera, di rispondere alla domanda più comune dei progettisti di schemi.

Da qui: http://labs.apache.org/webarch/uri/rfc/rfc3986.html#modifications


Hmm, *è un personaggio riservato, sì. Ma è un delimitatore secondario e quando leggo le specifiche dell'URI mi sembra che vada bene usare i delimitatori in un modo specifico dell'applicazione, nel componente path dell'URI . - Non significa che è OK per l'uso *(e anche ad esempio @, :, +, ,) nel modo che ho fatto?
KajMagnus,

Sono confuso dalla frase " sono riservati all'uso perché hanno un significato speciale all'interno di schemi specifici ". Non posso definire il mio schema specifico per l'applicazione? Potrebbe essere intenzionale, con delimitazioni secondarie, che le app Web le utilizzino in un modo specifico per l'app Web?
KajMagnus,

Per quello che vale, qui qualcuno dice che Wikipedia consente gli asterischi negli URL e qualcun altro dice che va bene: un URL può avere un asterisco?
KajMagnus,

Hai chiesto se dovresti usarlo, non se è tecnicamente possibile o meno, e l'idea generale è che se non sai esattamente cosa stai facendo, non dovresti usarlo.
Alex,

Non so se sono d'accordo con quella risposta generale. Un modo per imparare cose nuove, è fare qualcosa che non sai come funziona, quindi imparerai e scoprirai. Come sarebbe il nostro futuro se le persone in generale facessero solo cose che sapevano esattamente come stavano lavorando? (È una versione pre-alfa che rilascerei, quindi non è pensata per la produzione :-)) - Grazie comunque per le informazioni e i collegamenti :-)
KajMagnus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.