Domanda

Sto creando un sito che permette agli utenti di aggiungere delle parole chiave -> collegamenti URL. Voglio più che gli utenti siano in grado di collegare allo stesso URL (esattamente lo stesso, stessa istanza oggetto).

Quindi, se l'utente 1 tipi di " http://www.facebook.com/index.php "e l'utente 2 tipi di " http://facebook.com " e utente 3 tipi di" www. facebook.com "come faccio meglio 'Convert' loro di ciò che tutti questi decidono di:" http: //www.facebook .com / "

Il back-end è in Python ...

Come funziona un motore di ricerca tenere traccia degli URL? Fare mantengono un URL poi prendere ciò che mai si risolve o fanno lancio URL che sono diverso da quello che si risolvono da e solo a cuore la versione risolto?

Grazie !!!

È stato utile?

Soluzione

  

Quindi, se l'utente 1 tipi di " http://www.facebook.com/index.php "e l'utente 2 tipi di " http://facebook.com " e utente 3 tipi di" www. facebook.com "come faccio meglio 'Convert' loro di ciò che tutti questi decidono di:" http: //www.facebook .com / "

Si potrebbe risolvere utente 3 fissando gli URL non validi. www.facebook.com non è un URL, ma si può intuire che http:// dovrebbe andare sulla partenza. Una parte percorso vuoto è lo stesso del percorso /, in modo da poter essere sicuri che ha bisogno di andare alla fine troppo. Un buon parser URL deve essere in grado di fare questo bit.

Si potrebbe risolvere utente 2 facendo una richiesta HEAD HTTP all'URL. Se torna con un codice di stato di 301, hai un redirect permanente alla URL reale nell'intestazione della risposta Location. Facebook fa questo di inviare il traffico facebook.com a www.facebook.com, ed è sicuramente qualcosa che i siti dovrebbero fare (anche se nel mondo reale molti non sono). Si potrebbe prendere in considerazione consentire permettendo ad altri codici di stato di reindirizzamento in famiglia 3xx a fare lo stesso; non è proprio la cosa giusta da fare, ma alcuni siti utilizzano 302 invece di 301 per il reindirizzamento perché sono un po 'di spessore.

Se avete il tempo e le risorse di rete (più di più codice per impedire la caratteristica di essere abusato per DoS voi o altri), si potrebbe anche prendere in considerazione ottenere la pagina web di destinazione e l'analisi di esso (supponendo che risulta ot essere HTML). Se c'è un elemento <link rel="canonical" href="..." /> nella pagina, si dovrebbe anche trattare tale URL come quello giusto. (Visualizza origine:. Stack Overflow fa questo)

Tuttavia, purtroppo, casi utente 1 del non può essere risolto. Facebook sta scontando una pagina alla / e una pagina a /index.php, e anche se siamo in grado di guardare a loro e dire che sono la stessa cosa, non esiste un metodo tecnico per descrivere quel rapporto. In un mondo ideale Facebook dovrebbe includere sia un 301 reindirizzare risposta o un <link rel="canonical" /> dire alla gente che era / l'URL formato corretto per accedere a una particolare risorsa, piuttosto che /index.php (o viceversa). Ma non lo fanno, e in effetti la maggior parte dei siti web basati su database non lo fanno ancora sia.

Per aggirare il problema, alcuni motori di ricerca (*) confrontare il contenuto in diversi [SUB] domini, e, in misura limitata anche percorsi diversi sullo stesso host, e indovinate che sono lo stesso se il contenuto è sufficientemente simile. Naturalmente questo è un sacco di lavoro, richiede un sacco di stoccaggio e lavorazione, e non è in ultima analisi terribilmente affidabile.

Non vorrei davvero perdere tempo con gran parte di questo, al di là di riparazione in su URL come nel caso dell'utente 3. Dalla tua descrizione non sembra che essenziale che le pagine che “sono gli stessi” devono condividere l'identità reale, a meno che non ci sia un particolare caso d'uso non è stato menzionato.

(*:. Be ', comunque Google; quelli più tradizionali tradizionalmente non hanno fatto e sarebbe felicemente servire più link per la stessa pagina, ma mi piacerebbe assumere le altre major stanno facendo qualcosa di simile ora)

Altri suggerimenti

Non c'è modo di sapere, altro che la conoscenza "magico" per il particolare sito web, che "index.php" è lo stesso di andare a prendere "/".

Quindi, il problema, come detto, è impossibile.

mi piacerebbe salvare 3 collegamento come separati, dal momento che non si può mai dire in modo affidabile si risolvono alla stessa pagina. tutto dipende da come il server (fuori del nostro controllo) risolvere l'URL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top