Question

Je crée un site qui permet aux utilisateurs d'ajouter des mots-clés -> liens URL. Je veux plusieurs utilisateurs d'être en mesure de créer un lien vers la même URL (exactement la même chose, même instance d'objet).

Donc, si l'utilisateur 1 types dans « http://www.facebook.com/index.php "et l'utilisateur 2 types de " http://facebook.com " et l'utilisateur 3 types de" www. facebook.com « comment puis-je mieux « » les à ce que ces tous à résoudre: » convertir http: //www.facebook .com / "

L'arrière est en Python ...

Comment un moteur de recherche garder une trace des URL? Est-ce qu'ils gardent une URL prendre alors ce que jamais il décide de ou toss-ils les URL qui sont différents de ce qu'ils résolvent et juste se soucient de la version résolu?

Merci !!!

Était-ce utile?

La solution

  

Donc, si l'utilisateur 1 types dans « http://www.facebook.com/index.php "et l'utilisateur 2 types de " http://facebook.com " et l'utilisateur 3 types de" www. facebook.com « comment puis-je mieux « » les à ce que ces tous à résoudre: » convertir http: //www.facebook .com / "

Vous souhaitez résoudre l'utilisateur 3 en fixant les URL non valides. www.facebook.com est pas une URL, mais vous pouvez deviner que http:// devrait aller au départ. Une partie de chemin vide est le même que le chemin de /, de sorte que vous pouvez être sûr que doit aller à la fin aussi. Un bon analyseur URL doit être capable de faire ce bit.

Vous pouvez résoudre utilisateur 2 en faisant une requête HEAD HTTP à l'URL. Si elle revient avec un code d'état de 301, vous avez une redirection permanente à l'URL réelle dans l'en-tête de réponse Location. Facebook fait cela pour envoyer le trafic facebook.com à www.facebook.com, et il est certainement quelque chose que les sites devraient faire (même si dans le monde réel beaucoup ne sont pas). Vous pouvez autoriser envisager d'autoriser d'autres codes d'état de redirection dans la famille de 3xx faire la même chose; ce n'est pas vraiment la bonne chose à faire, mais certains sites utilisent 302 au lieu de 301 pour la redirection parce qu'ils sont un peu épais.

Si vous avez le temps et des ressources réseau (plus plus de code pour empêcher la fonction abus à des fins DoS ou autres), vous pouvez également envisager d'obtenir la page Web cible et l'analyser (en supposant qu'il se révèle Ot HTML). S'il y a un élément de <link rel="canonical" href="..." /> dans la page, vous devez également traiter cette URL comme étant la bonne. (Afficher la source. Stack Overflow le fait)

Cependant, malheureusement, le cas de l'utilisateur 1 ne peut pas être résolu. Facebook sert une page à / et une page à /index.php, et si nous pouvons regarder et dire qu'ils sont les mêmes, il n'y a pas de méthode technique pour décrire cette relation. Dans un monde idéal Facebook comprendrait soit une réponse ou 301 redirect un <link rel="canonical" /> pour dire aux gens que / était l'URL du format approprié pour accéder à une ressource particulière plutôt que /index.php (ou vice versa). Mais ils ne le font pas, et en fait la plupart des sites Web axés sur la base de données-ne le font pas encore non plus.

Pour contourner ce problème, certains moteurs de recherche (*) comparer le contenu à différents domaines [sous], et dans une moindre mesure aussi des chemins différents sur le même hôte, et devinez que ce sont les mêmes si le contenu est suffisamment similaire. Bien sûr, cela est beaucoup de travail, nécessite beaucoup de stockage et de traitement, et est finalement pas très fiable.

Je dérange pas vraiment avec beaucoup de cela, au-delà de la fixation des URL comme dans l'utilisateur 3 cas. D'après votre description, il ne semble pas essentiel que les pages qui « sont les mêmes » doivent partager l'identité réelle, à moins qu'il ya un cas d'utilisation particulier que vous ne l'avez pas mentionné.

(*:. Bien, Google de toute façon, les plus traditionnels ne pas traditionnellement et serviraient heureusement des liens multiples pour la même page, mais je suppose les autres majors sont en train de faire quelque chose de similaire maintenant)

Autres conseils

Il n'y a pas moyen de savoir, autre que la connaissance « magique » sur le site Web particulier, que « index.php » est le même que l'extraction « /".

Alors, votre problème, comme indiqué, est impossible.

i économiseriez 3 lien comme séparés, puisque vous ne pouvez jamais dire de manière fiable, ils décident de même page. tout dépend de la façon dont le serveur (hors de notre contrôle) résoudre l'URL.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top