¿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) .
Respuestas:
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:
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%2a
cuando 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.
fuente
Sí, porque es un personaje reservado.
Desde aquí: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html
EDITAR:
Desde aquí: http://labs.apache.org/webarch/uri/rfc/rfc3986.html#modifications
fuente
*
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?