Frage

Ich erstelle eine Website, die Benutzern erlaubt, Keyword hinzufügen -> URL-Links. Ich möchte mehrere Benutzer auf die gleiche URL-Link in der Lage sein (genau das gleiche, gleiche Objektinstanz).

Also, wenn Benutzer 1 Typ in „ http://www.facebook.com/index.php "und Benutzer 2 Typen in " http://facebook.com " und Benutzer 3 Typen in" www. facebook.com „wie kann ich am besten‚convert‘, um sie zu dem, was alle diese Entschlossenheit:“ http: //www.facebook .com / "

Das hintere Ende ist in Python ...

Wie funktioniert eine Suchmaschine Spur von URLs halten? Haben sie halten eine URL dann nehmen, was immer es beschließt, oder tun sie URLs werfen, die anders sind, was sie lösen und nur kümmern uns um die aufgelöste Version?

Danke !!!

War es hilfreich?

Lösung

  

Also, wenn Benutzer 1 Typ in „ http://www.facebook.com/index.php "und Benutzer 2 Typen in " http://facebook.com " und Benutzer 3 Typen in" www. facebook.com „wie kann ich am besten‚convert‘, um sie zu dem, was alle diese Entschlossenheit:“ http: //www.facebook .com / "

Sie würden Benutzer lösen 3 durch ungültige URLs Fixierung auf. www.facebook.com ist kein URL, aber man kann vermuten, dass http:// auf den Start gehen soll. Ein leerer Pfad Teil ist die gleiche wie der / Weg, so dass Sie sicher sein können, dass Bedarf auch am Ende zu gehen. Ein guten URL-Parser sollte in der Lage sein, dieses Bit zu tun.

Sie können Benutzer 2, indem eine HTTP HEAD-Anforderung an die URL aufzulösen. Wenn es mit einem Statuscode von 301 zurückkommt, haben Sie eine dauerhafte Umleitung auf die reale URL in dem Location Response-Header bekommen. Facebook tut dies facebook.com Verkehr zu www.facebook.com zu schicken, und es ist definitiv etwas, dass Websites (obwohl viele sind nicht in der realen Welt auch) tun sollen. Vielleicht haben Sie zulassen, dass andere Umleitung Statuscodes in der 3xx Familie Prüfung der Frage, dasselbe zu tun; es ist nicht wirklich das Richtige zu tun, aber einige Websites verwenden 302 statt 301 für die Umleitung, weil sie dick ein wenig sind.

Wenn Sie die Zeit und Netzwerkressourcen (plus mehr Code, um die Funktion missbraucht, um DoS Sie oder andere zu verhindern), können Sie auch gibt es die Ziel-Webseite betrachten könnte und Parsen es (vorausgesetzt, es stellt sich heraus, ot sei HTML). Wenn es ein <link rel="canonical" href="..." /> Element auf der Seite ist, sollten Sie auch diese URL behandeln, als die richtige eins ist. (Quelle anzeigen. Stack-Überlauf tut dies)

Doch leider Fall von Benutzer 1 kann nicht aufgelöst werden. Facebook ist eine Seite bei / dient und eine Seite bei /index.php, und obwohl wir sie betrachten und sagen, sie sind die gleichen, gibt es keine technische Methode, diese Beziehung zu beschreiben. In einer idealen Welt gehört Facebook würde entweder eine 301 Umleitungsantwort oder ein <link rel="canonical" /> Menschen zu sagen, dass / die richtige Format URL war eher eine bestimmte Ressource zuzugreifen als /index.php (oder umgekehrt). Aber sie tun es nicht, und in der Tat die meisten Datenbank-gestützte Websites dies nicht tun noch nicht.

Um dies zu umgehen, einige Suchmaschinen (*) zu vergleichen, um den Inhalt in unterschiedlichen [sub] Domänen und in begrenztem Umfang auch verschiedene Pfade auf dem gleichen Host, und vermutet, dass sie gleich sind, wenn der Inhalt ausreichend ist ähnlich. Natürlich ist dies eine Menge Arbeit ist, erfordert eine Menge Lagerung und Verarbeitung, und ist letztlich nicht sehr zuverlässig.

Ich würde mit viel davon nicht wirklich stört, über URLs wie in dem Benutzer 3 Fall bis zur Festsetzung. Aus Ihrer Beschreibung scheint es nicht, dass wesentlich, dass Seiten, dass „die gleichen“ haben tatsächliche Identität zu teilen, es sei denn es einen bestimmten Anwendungsfall ist Sie nicht erwähnt haben.

(*. Gut, Google sowieso, mehr traditionelle traditionell nicht und würde mehrere Links für die gleiche Seite glücklich dienen, aber ich würde die anderen Majors übernimmt etwas ähnliches jetzt tun)

Andere Tipps

Es gibt keine Möglichkeit zu wissen, andere als „Magie“ Wissen über die jeweilige Website, dass „index.php“ ist das gleiche wie das Abrufen „/".

Also, Ihr Problem, wie gesagt, ist nicht möglich.

würde ich 3 Link speichern als getrennt, da man nie sicher sagen kann sie auf derselben Seite lösen. es hängt alles davon ab, wie der Server (außerhalb unserer Kontrolle) die URL lösen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top