¿Puedo usar asteriscos en las URL?

13

¿Hay alguna razón por la que no debería usar un asterisco ( *) en una URL?

Antecedentes:

Con asteriscos, podría proporcionar estas URL agradables y fáciles de usar (¿o qué crees?):

  • example.com/some/folder/search-phrase*
    significa buscar páginas con nombres que comienzan con "frase de búsqueda", ubicado en / some / folder / .

  • example.com/some/**/*search-phrase*
    significa buscar cualquier página con "frase de búsqueda" en cualquier parte de su nombre .

  • example.com/some/folder/*
    significa listar todas las páginas en / some / folder / (en lugar de mostrar la página / some / folder / index) .

KajMagnus
fuente
1
cf. pregunta SO similar
Su '
1
Aquí hay otra pregunta SO similar: ¿Puede una URL tener un asterisco? . No los encontré, porque deletreé Asterisk con Asterix: - / hasta que me corrigieron (vea la respuesta de Asterix a continuación :-)).
KajMagnus
@KajMagnus Hoy encontré un sitio por primera vez usando asteriscos en sus URL. Vea mi respuesta actualizada a continuación.
Nick

Respuestas:

16

Sobre el uso de Asterix en las URL

El uso de un Asterix en su URL probablemente no sea una gran idea, en gran parte porque:

  1. Ni UTF-8 ni ASCII pueden actualmente denotar un Asterix.
  2. Sería poco más que una mancha en una barra de direcciones estándar del navegador.
  3. Dudo que le guste mucho. Y tiene algunos amigos bastante grandes.
  4. Es raro

Sobre el uso de asteriscos en las URL

Usar un asterisco (*) en una URL (y, sí, sé que eso fue lo que quiso decir todo el tiempo) tampoco es una gran idea. Debido a que es un personaje reservado, no se usa en ningún otro lugar; aunque su esquema de URL le parezca fácil de usar, pocos pensarán en probarlo, y es probable que dé resultados impredecibles porque el significado de los comodines en las URL es difícil de discernir. (No podría decir qué significaban todos sus ejemplos hasta que leí sus descripciones).

No solo eso, sino que podría haber algunas formas más semánticas / significativas de hacer lo que usted describe. Por ejemplo, podría agregar una cadena de consulta y usar una variable 'find' y 'where' para decirle a su método qué encontrar dónde:

Encuentre páginas que comienzan con 'frase de búsqueda' en /some/folder/:

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

Encuentre páginas con 'frase de búsqueda' en cualquier lugar:

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

Para mostrar todas las páginas, usaría un método separado llamado 'todo' en lugar de una cadena de consulta o una sintaxis comodín:

example.com/some/folder/all

La sintaxis de la cadena de consulta es mucho más común que los asteriscos (busque en la barra de direcciones la próxima vez que realice una búsqueda en Google, por ejemplo) y es probable que también sea más fácil de codificar.

Finalmente, si no le gusta el aspecto de las cadenas de consulta, puede anteponer un nombre de método llamado 'buscar' y luego usar los siguientes dos bloques como las variables 'encontrar' y 'dónde'. Por ejemplo, en lugar de:

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

Podrías tener:

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

Luego, solo necesita verificar la palabra clave 'buscar' en su ruta URL, y activar el método de búsqueda utilizando los siguientes dos segmentos de ruta como variables.


ACTUALIZACIÓN: Hoy encontré mi primer asterisco en una URL. La nueva interfaz de archive.org lo está utilizando exactamente como lo describe (como parte de una función de búsqueda), en lugar de una palabra clave 'all'. p.ej:

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

en lugar de

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

El primer ejemplo devuelve listados archivados de todas las fechas para google.com, en lugar de solo páginas de una fecha determinada (segundo ejemplo). Curiosamente, no puedo vincular a la página en vivo aquí, porque el sitio de Stack Exchange codifica el *carácter como %2acuando aparece en las URL, lo que da como resultado un 404 de archive.org. (Quizás otra razón para no usar asteriscos en las URL).

Sigo pensando que no está tan claro como 'todos', pero, si está buscando ejemplos de otros sitios que adopten asteriscos en sus URL, ese es el primero que he visto.

Mella
fuente
Wrt Asterix : ¡Qué! ¿Creías que me refería a "Asterisco"?
KajMagnus
Wrt Asterix : Oh, por eso no encontré ninguna página relevante en StackOverflow o Webmasters. Ahora encontré 2 páginas relacionadas en SO: Permitir un asterisco en la URL y ¿Puede una URL tener un asterisco? - gracias :-)
KajMagnus
Gracias por la información sobre cómo los usuarios finales probablemente percibirían los asteriscos. Ahora lo más probable es que prefiera cadenas de consulta.
KajMagnus
(En caso de que alguien se pregunte sobre la referencia a Asterix:
escribí
11

Sí, porque es un personaje reservado.

Otros personajes reservados

El asterisco ("*", ASCII 2A hexadecimal) y el signo de exclamación ("!", ASCII 21 hexadecimal) están reservados para su uso como que tienen un significado especial dentro de esquemas específicos.

Desde aquí: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html

EDITAR:

La Sección 2, sobre caracteres, se ha reescrito para explicar qué caracteres están reservados, cuándo están reservados y por qué están reservados, incluso cuando la sintaxis genérica no los utiliza como delimitadores. Los caracteres de marca que generalmente no son seguros para decodificar, incluidos el signo de exclamación ("!"), El asterisco ("*"), las comillas simples ("'") y los paréntesis de apertura y cierre ("(" y ")") , se han trasladado al conjunto reservado para aclarar la distinción entre reservado y no reservado y, con suerte, para responder a la pregunta más común de los diseñadores de esquemas.

Desde aquí: http://labs.apache.org/webarch/uri/rfc/rfc3986.html#modifications

Alex
fuente
Hmm, *es un personaje reservado, sí. Pero es un subdelimitador , y cuando leo la especificación de URI me parece que está bien usar subdelimitadores de una manera específica de aplicación, en el componente de ruta del URI . - ¿No significa esto que está bien para el uso *(y también, por ejemplo @, :, +, ,) de la manera que lo hice?
KajMagnus
Me confunde la frase " están reservados para su uso porque tienen un significado especial dentro de esquemas específicos ". ¿No puedo definir mi propio esquema específico de aplicación? ¿Podría ser esa la intención, con subdelimitaciones, de que las aplicaciones web las usen de manera específica?
KajMagnus
Por lo que vale, aquí alguien dice que Wikipedia permite los asteriscos en las URL y alguien más dice que está bien: ¿Puede una URL tener un asterisco?
KajMagnus
Preguntó si debería usarlo, no si es técnicamente posible o no, y la idea general es que, a menos que sepa exactamente lo que está haciendo, no debe usarlo.
Alex
No sé si estoy de acuerdo con esa respuesta general. Una forma de aprender cosas nuevas es hacer algo que no sabes cómo funciona, y luego aprenderás y lo descubrirás. ¿Cómo sería nuestro futuro si las personas en general hicieran solo cosas que sabían exactamente cómo estaban trabajando? (Es una versión pre-alfa que lanzaría, por lo que no está destinada a la producción :-)) - Gracias por la información y los enlaces de todos modos :-)
KajMagnus