题
我要创建一个网站,允许用户添加关键字 - > URL链接。我想多个用户能够链接到相同的URL(完全一样,相同的对象实例)。
因此,如果用户1种类型“ http://www.facebook.com/index.php “和用户2种类型 ” http://facebook.com “ 和用户3种类型” 万维网。 facebook.com“怎么办我最好的‘’他们什么这些都决心:”转换 HTTP://www.facebook的.com / “
后端是在Python ...
如何做一个搜索引擎跟踪URL的?难道他们保持一个URL然后采取什么都解析到一个或他们折腾的是来自不同的网址,他们下定决心,只是关心解决的版本?
感谢!!!
解决方案
因此,如果用户1种类型“ http://www.facebook.com/index.php “和用户2种类型 ” http://facebook.com “ 和用户3种类型” 万维网。 facebook.com“怎么办我最好的‘’他们什么这些都决心:”转换 HTTP://www.facebook的.com / “
您会通过固定了无效的网址,解决用户3。 www.facebook.com
是不是一个URL,但你可以猜测,http://
应该去开始。空路的部分是一样的/
路径,所以你可以肯定的是需要去结束了。一个好的URL解析器应该能够做到这一点。
您可以通过使一个HTTP HEAD请求的URL解决用户2。如果它回来了与301
的状态代码,您已经有了一个永久重定向到在Location
响应头真正的URL。 Facebook上这样做是为了facebook.com
流量发送到www.facebook.com
,和它肯定的东西,网站应该做的事(尽管在现实世界中很多都没有)。你可能会允许考虑允许在3xx
家人做同样的其它重定向状态代码;它不是真正做正确的事情,但有些网站使用302
代替301
的重定向,因为他们有点厚。
如果你有时间和网络资源(加上更多的代码,以防止该功能被滥用于DoS攻击你或其他人),你也可以考虑让目标网页并解析它(假设它原来OT是HTML)。如果在页面中的元素<link rel="canonical" href="..." />
,你也应该把该URL为正确的一个。 (查看来源:堆栈溢出执行此)
然而,不幸的是,用户1的情况下,不能得到解决。 Facebook正在以/
服务在/index.php
一个页面,一个页面,虽然我们可以看看他们,说他们是一样的,有来形容这种关系没有任何技术方法。在一个理想世界的Facebook将包括无论是301
重定向响应或<link rel="canonical" />
告诉人们,/
是正确格式的URL来访问一个特定的资源,而不是/index.php
(反之亦然)。但他们不这样做,事实上,大多数数据库驱动的网站不这样做又或者。
要解决这个问题,一些搜索引擎(*)比较在不同的[子]结构域的内容,并且在有限的程度相同的主机上也不同的路径,并猜测它们是相同的,如果含量足够类似。当然,这是大量的工作,需要大量的存储和处理,而最终是不是非常可靠。
我不会真正与多的这种麻烦,超出了用户3壳体固定起来的URL等。从你的描述它不似乎必要的网页说:“都一样”必须共享真实身份,除非有你没有提到特定用例。
(*:好了,反正谷歌;更传统的那些传统上不和将愉快地满足了对于同一页面的多个链接,但我会承担其他专业,现在正在做类似的东西)
其他提示
有没有办法知道,比对特定网站的“神奇”的知识等,即“的index.php”是一样的取“/".
所以,你的问题,如上所述,是不可能的。
我会节省3链路分离的,因为你永远不能可靠地告诉他们解析到同一页面。这一切都取决于服务器(在我们控制的)如何解析URL。