Pergunta

Estou criando um site que permite que os usuários adicionem links de palavra -chave -> URL. Quero que vários usuários possam vincular ao mesmo URL (exatamente o mesmo, a mesma instância de objeto).

Então, se o usuário 1 tipos em "http://www.facebook.com/index.php"E o usuário 2 tipos em"http://facebook.com"E o usuário 3 tipos em" www.facebook.com "Como é melhor" convertê -los "para o que todos eles resolvem:"http://www.facebook.com/"

O back -end está em Python ...

Como um mecanismo de pesquisa acompanha os URLs? Eles mantêm um URL e, em seguida, tomam o que se resolve ou jogam URLs diferentes do que resolvem e se preocupam com a versão resolvida?

Obrigado!!!

Foi útil?

Solução

Então, se o usuário 1 tipos em "http://www.facebook.com/index.php"E o usuário 2 tipos em"http://facebook.com"E o usuário 3 tipos em" www.facebook.com "Como é melhor" convertê -los "para o que todos eles resolvem:"http://www.facebook.com/"

Você resolveria o usuário 3 consertando URLs inválidos. www.facebook.com não é um URL, mas você pode adivinhar que http:// deve ir no início. Uma parte do caminho vazio é o mesmo que o / Caminho, para que você possa ter certeza de que também precisa ir ao final. Um bom analisador de URL deve ser capaz de fazer isso.

Você pode resolver o usuário 2 fazendo uma solicitação de cabeça HTTP para o URL. Se voltar com um código de status de 301, você tem um redirecionamento permanente para o URL real no Location Cabeçalho de resposta. O Facebook faz isso para enviar facebook.com tráfego para www.facebook.com, e é definitivamente algo que os sites deveriam estar fazendo (embora no mundo real muitos não sejam). Você pode considerar permitir outros códigos de status de redirecionamento no 3xx família para fazer o mesmo; Não é realmente a coisa certa a se fazer, mas alguns sites usam 302 ao invés de 301 para o redirecionamento porque eles são um pouco grossos.

Se você tiver os recursos de tempo e rede (além de mais código para impedir que o recurso seja abusado para que você ou outras pessoas), você também pode considerar a página da Web de destino e analisá -lo (supondo que isso seja um HTML). Se houver um <link rel="canonical" href="..." /> Elemento na página, você também deve tratar esse URL como sendo o adequado. (Visualizar fonte: o Stack Overflow faz isso.)

Infelizmente, o caso do usuário 1 não pode ser resolvido. O Facebook está servindo uma página em / e uma página em /index.php, e embora possamos olhar para eles e dizer que eles são iguais, não há método técnico para descrever esse relacionamento. Em um mundo ideal, o Facebook incluiria um 301 Redirecionar a resposta ou um <link rel="canonical" /> Para dizer às pessoas que / era o URL de formato adequado para acessar um recurso específico em vez de /index.php (ou vice-versa). Mas eles não, e de fato a maioria dos sites orientados a banco de dados ainda não faz isso ainda.

Para contornar isso, alguns mecanismos de pesquisa (*) comparam o conteúdo em diferentes domínios [sub] e, em uma extensão limitada, também caminhos diferentes no mesmo host, e adivinhem que eles são os mesmos se o conteúdo for suficientemente semelhante. É claro que isso é muito trabalho, requer muito armazenamento e processamento e, em última análise, não é terrivelmente confiável.

Eu realmente não me incomodaria com isso, além de consertar URLs como no caso do usuário 3. Pela sua descrição, não parece essencial que as páginas que "sejam as mesmas" tenham que compartilhar a identidade real, a menos que haja um caso de uso específico que você não mencionou.

(*: Bem, o Google de qualquer maneira; os mais tradicionais tradicionalmente não o fizeram e felizmente serviriam vários links para a mesma página, mas eu suponho que os outros cursos estejam fazendo algo semelhante agora.)

Outras dicas

Não há como saber, além do conhecimento "mágico" sobre o site em particular, que "/index.php" é o mesmo que buscar "/".

Portanto, seu problema, como afirmado, é impossível.

Eu economizaria 3 link como separado, pois você nunca pode dizer com segurança que eles resolvem para a mesma página. Tudo depende de como o servidor (fora do nosso controle) resolve o URL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top