2010-07-07 18 views
5

Me he estado preguntando cómo funciona la url pequeña.¿Cómo funciona la url pequeña

Me gustaría desarrollar algo similar para mi sitio, pero como la mayoría de la gente, uso GUID para los identificadores. Cuando se crea un objeto, ¿debo generar una cadena aleatoria de 10 caracteres para usar como identificación pública, o hay un enfoque más inteligente?

Ejemplo de la vieja url: www.mysite.com/default.aspx?userId={id}

Ejemplo de nueva url: www.mysite.com/pwzd4r9niy

+2

¡Tenga cuidado de no permitir colisiones con las "cosas reales" en su sitio! Eso sería malo. – Borealid

+0

Borealid, ¿qué quieres decir con colisiones con 'cosas reales'? – Dofs

+0

Dofs: quiere decir que si genera una "nueva url" que es lo mismo que una página real, se encontrará con problemas (imagine que su cadena aleatoria fuera 'index.aspx', por ejemplo ...). –

Respuesta

5

Se puede utilizar cualquier tipo de generador de cadenas aleatorias o GUID para esto. No creo que haya un enfoque mucho más inteligente. (Palantir ofrece una buena alternativa, hashing la URL entrante.)

El resto es relativamente sencillo: mantener una tabla de base de datos con ID y URL de destino; Cuando entra una solicitud, busque la ID y realice un redireccionamiento header a la URL de destino.

Más discusión en this blog post.

También hay servicios de redirección que usan palabras de una lista de diccionarios para construir una URL.

Lamentablemente, EvilURL se ha ido. Se utiliza para crear direcciones URL "cortas" como

http://evilURL.com/donkey_porn-shotguns/cracking-virus-exploit 

que era el servicio de redirección URL única realmente vale la pena. :)

Y, como un poco de trivia, http://to es el servicio de redirección más corto (y, creo que la URL web más corta) conocida por el hombre.

+1

todavía hay http://www.shadyurl.com/ :) – Piskvor

+1

@Piskvor awww, ¡perfecto! Solo tienes que * amar * esto: 'http: // 5z8.info/malicious-cookie_d5d2_hateminorities' :) –

+0

De hecho, ¿qué no le gusta de alguien que vive en una piña? :RE – Piskvor

0

Solo hash toda la cadena, a una longitud razonable.

Cuestiones relacionadas