Pregunta

Estoy creando un sitio que permite a los usuarios añadir palabras clave -> enlaces URL. Quiero que varios usuarios puedan enlace a la misma URL (exactamente lo mismo, la misma instancia de objeto).

Así que si el usuario 1 en tipos " http://www.facebook.com/index.php "y el usuario 2 tipos en " http://facebook.com " y el usuario 3 tipos en" www. facebook.com "¿Cómo trato mejor 'convertir' a lo que todos éstos resuelven:" http: //www.facebook .com / "

La parte final es en Python ...

¿Cómo funciona un motor de búsqueda de seguimiento de URL? ¿Mantienen una URL a continuación, tomar lo que cada vez que se resuelva o hacer que tirar direcciones URL que son diferentes de los que resuelven y solo se preocupan por la versión resuelto?

Gracias !!!

¿Fue útil?

Solución

  

Así que si el usuario 1 en tipos " http://www.facebook.com/index.php "y el usuario 2 tipos en " http://facebook.com " y el usuario 3 tipos en" www. facebook.com "¿Cómo trato mejor 'convertir' a lo que todos éstos resuelven:" http: //www.facebook .com / "

Se había resolver el usuario 3 mediante la fijación de las URL no válidos. www.facebook.com no es una URL, pero se puede adivinar que http:// debe ir en el inicio. Una parte de la ruta vacío es la misma que la ruta /, lo que puede estar seguro de que tiene que ir en el extremo también. Un analizador buena URL debe ser capaz de hacer este bit.

Se pudo resolver el usuario 2 haciendo una petición HEAD HTTP a la URL. Si se vuelve con un código de estado de 301, usted tiene una redirección permanente a la URL real en la cabecera de respuesta Location. Facebook hace esto para enviar tráfico a facebook.com www.facebook.com, y sin duda es algo que los sitios deberían estar haciendo (a pesar de que en el mundo real muchos no lo son). Es posible que permita considerar permitir a otros códigos de estado de redirección en la familia 3xx a hacer lo mismo; en realidad no es lo que hay que hacer, pero algunos sitios utilizan 302 en lugar de 301 para la redirección porque son un poco gruesas.

Si usted tiene el tiempo y los recursos de red (además de más código para impedir que la función está abusando de DoS usted u otros), también se puede considerar la obtención de la página web de destino y analizarlo (suponiendo resulta que vayan a ser HTML). Si hay un elemento <link rel="canonical" href="..." /> en la página, también se debe tratar a esa URL como el apropiado. (Ver Fuente:. Desbordamiento de pila hace esto)

Sin embargo, por desgracia, el caso de usuarios de 1 no se puede resolver. Facebook está sirviendo una página en / y una página en /index.php, y aunque podemos mirarlos y decir que son lo mismo, no hay ningún método técnico para describir esa relación. En un mundo ideal Facebook incluiría ya sea una respuesta de redirección 301 o una <link rel="canonical" /> decirle a la gente que era / la URL correcta de formato para acceder a un recurso particular en lugar de /index.php (o viceversa). Pero no lo hacen, y de hecho la mayoría de los sitios web con bases de datos no hacen esto sin embargo, tampoco.

Para evitar esto, algunos motores de búsqueda (*) comparar el contenido en diferentes dominios [sub], y en un grado limitado también caminos diferentes en la misma máquina, y supongo que son la misma si el contenido es lo suficientemente similar. Por supuesto, esto es un montón de trabajo, requiere una gran cantidad de almacenamiento y procesamiento, y no es en última instancia, todo confiables.

Me en realidad no se moleste con gran parte de este, más allá de la fijación de las URL, como en el caso del usuario 3. Desde su descripción no parece que esencial que las páginas que “son lo mismo” tienen que compartir la identidad real, a menos que haya un caso de uso particular que no ha mencionado.

(*:. Bien, de todos modos Google; los más tradicionales que tradicionalmente no lo hicieron y me volvería a servir a múltiples enlaces para la misma página, pero me gustaría asumir las otras carreras están haciendo algo similar ahora)

Otros consejos

No hay manera de saber, aparte de los conocimientos "mágica" sobre el sitio web en particular, que "index.php" es lo mismo que ir a buscar "/".

Por lo tanto, su problema, como se ha dicho, es imposible.

i ahorraría 3 enlace como separados, ya que nunca se puede decir de forma fiable resuelven misma página. todo depende de cómo el servidor (fuera de nuestro control) resolver la URL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top