Posso usar asteriscos nos URLs?

12

Há algum motivo para eu não usar um asterisco ( *) em um URL?

Fundo:

Com asteriscos, eu poderia fornecer esses URLs agradáveis ​​e amigáveis ​​(ou o que você acha?):

  • example.com/some/folder/search-phrase*
    significa procurar páginas com nomes começando com "frase de pesquisa", localizada em / some / folder / .

  • example.com/some/**/*search-phrase*
    significa procurar por qualquer página com "frase de pesquisa" em qualquer lugar do nome .

  • example.com/some/folder/*
    significa listar todas as páginas em / some / folder / (em vez de mostrar a página / some / folder / index) .

KajMagnus
fonte
1
Aqui está outra pergunta SO semelhante: Um URL pode ter um asterisco? . Não os encontrei porque soletrei o Asterisk com o Asterix: - / até ser corrigido (veja a resposta do Asterix abaixo :-)).
KajMagnus
@KajMagnus Encontrei um site hoje pela primeira vez usando asteriscos em seus URLs. Veja minha resposta atualizada abaixo.
Nick

Respostas:

16

Sobre o uso do Asterix em URLs

Usar um Asterix no seu URL provavelmente não é uma ótima idéia, principalmente porque:

  1. No momento, nem o UTF-8 nem o ASCII podem denotar um Asterix.
  2. Ele seria pouco mais do que uma mancha em uma barra de endereço padrão do navegador.
  3. Duvido que ele goste muito. E ele tem alguns amigos muito grandes.
  4. É esquisito.

Sobre o uso de asteriscos em URLs

Usar um asterisco (*) em uma URL (e, sim, eu sei que é isso que você quis dizer o tempo todo) também não é uma ótima idéia. Por ser um personagem reservado, não é usado em nenhum outro lugar; mesmo que seu esquema de URL pareça fácil para você, poucos pensam em experimentá-lo e provavelmente fornecerá resultados imprevisíveis porque é difícil discernir o significado de caracteres curinga nos URLs. (Eu não sabia dizer o que todos os seus exemplos significavam até ler suas descrições.)

Não apenas isso, mas pode haver algumas maneiras mais semânticas / significativas de fazer o que você descreve. Por exemplo, você pode anexar uma string de consulta e usar a variável 'find' e 'where' para informar ao seu método o que encontrar onde:

Encontre páginas que começam com 'frase de pesquisa' em /some/folder/:

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

Encontre páginas com 'frase de pesquisa' em qualquer lugar:

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

Para mostrar todas as páginas, eu usaria um método separado chamado 'all' em vez de uma string de consulta ou sintaxe curinga:

example.com/some/folder/all

A sintaxe da string de consulta é muito mais comum que os asteriscos - procure na barra de endereços na próxima vez que você fizer uma pesquisa no Google, por exemplo - e provavelmente também será mais fácil codificar.

Por fim, se você não gostar da aparência das seqüências de consulta, você pode acrescentar um nome de método chamado 'search' e, em seguida, usar os próximos dois blocos como variáveis ​​'find' e 'where'. por exemplo, em vez de:

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

Você pode ter:

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

Então, você só precisa verificar a palavra-chave 'search' no seu caminho de URL e acionar o método de pesquisa usando os próximos dois segmentos de caminho como variáveis.


ATUALIZAÇÃO: Encontrei meu primeiro asterisco em um URL hoje. A nova interface archive.org está usando exatamente como você descreve (como parte de um recurso de pesquisa), no lugar de uma palavra-chave 'all'. por exemplo:

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

ao invés de

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

O primeiro exemplo retorna listagens arquivadas de todas as datas para google.com, em vez de apenas páginas de uma determinada data (segundo exemplo). Curiosamente, não posso vincular a página ao vivo aqui, porque o site do Stack Exchange codifica o *caractere como %2aquando ele aparece nos URLs, o que resulta em um 404 do archive.org. (Talvez outro motivo para não usar asteriscos nos URLs.)

Ainda acho que não é tão claro como 'todos', mas, se você estiver procurando por exemplos de outros sites adotando asteriscos em seus URLs, esse é o primeiro que eu já vi.

usuario
fonte
Wrt Asterix : O que! Você achou que eu quis dizer "Asterisk"?
KajMagnus
Wrt Asterix : Ah, é por isso que não encontrei nenhuma página relevante no StackOverflow ou Webmasters. Agora encontrei duas páginas relacionadas no SO: Permitir asterisco no URL e Um URL pode ter um asterisco? - obrigado :-)
KajMagnus
Obrigado pela informação de como os usuários finais provavelmente perceberiam os asteriscos. Agora provavelmente vou preferir cadeias de consulta.
KajMagnus
(No caso de alguém maravilhas sobre a referência ao Asterix: Eu grafada Asterisk, eu pensei que era Asterix :-))
KajMagnus
11

Sim, porque é um personagem reservado.

Outros caracteres reservados

O asterisco ("*", ASCII 2A hex) e o ponto de exclamação ("!", ASCII 21 hex) são reservados para uso como tendo significado especial em esquemas específicos.

A partir daqui: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html

EDITAR:

A seção 2, sobre caracteres, foi reescrita para explicar quais caracteres são reservados, quando são reservados e por que são reservados, mesmo quando não são usados ​​como delimitadores pela sintaxe genérica. Os caracteres de marca que normalmente não são seguros para decodificar, incluindo o ponto de exclamação ("!"), Asterisco ("*"), aspas simples ("'") e parênteses de abertura e fechamento ("(" e ")") , foram movidos para o conjunto reservado, a fim de esclarecer a distinção entre reservado e não reservado e, espero, responder à pergunta mais comum dos projetistas de esquema.

A partir daqui: http://labs.apache.org/webarch/uri/rfc/rfc3986.html#modifications

Alex
fonte
Hmm, *é um personagem reservado, sim. Mas é um sub-delimitador e, quando leio as especificações do URI, parece-me bom usar sub-delimitações de uma maneira específica de aplicativo, no componente de caminho do URI . - Isso não quer dizer que é OK para o uso *(e também, por exemplo @, :, +, ,) no caminho que eu fiz?
KajMagnus
Estou confuso com a frase " são reservados para uso como tendo significado especial dentro de esquemas específicos ". Não posso definir meu próprio esquema específico de aplicativo? Poderia ser intenção, com sub-delimitações, que os aplicativos da Web os usassem de maneira específica?
KajMagnus
Pelo que vale, aqui alguém diz que a Wikipedia permite asteriscos em URLs e alguém diz que está tudo bem: um URL pode ter um asterisco?
KajMagnus
Você perguntou se deveria usá-lo, não se é tecnicamente possível ou não, e a idéia geral é que, a menos que você saiba exatamente o que está fazendo, não deve usá-lo.
25411 Alex
Não sei se concordo com essa resposta geral. Uma maneira de aprender coisas novas é fazer algo que você não sabe como funciona, e então você aprenderá e descobrirá. Como seria o nosso futuro se as pessoas em geral fizessem apenas coisas que sabiam exatamente como estavam trabalhando? (É um pré-alfa-versão que eu estaria liberando, por isso não significou para a produção :-)) - Obrigado pela informação e links de qualquer maneira :-)
KajMagnus