Search 如何最好地规范化URL

Search 如何最好地规范化URL,search,url,resolveurl,Search,Url,Resolveurl,我正在创建一个允许用户添加关键字-->URL链接的网站。我希望多个用户能够链接到相同的url(完全相同,相同的对象实例) 因此,如果用户1在“”中键入,用户2在“”中键入,用户3在“www.facebook.com”中键入,我如何才能最好地将它们“转换”为所有这些解析的结果: 后端是Python 搜索引擎如何跟踪URL?他们是否保留一个URL,然后使用它解析的内容,或者是否丢弃与解析内容不同的URL,并且只关心解析的版本 谢谢 除了关于特定网站的“神奇”知识之外,没有办法知道“/index.ph

我正在创建一个允许用户添加关键字-->URL链接的网站。我希望多个用户能够链接到相同的url(完全相同,相同的对象实例)

因此,如果用户1在“”中键入,用户2在“”中键入,用户3在“www.facebook.com”中键入,我如何才能最好地将它们“转换”为所有这些解析的结果:

后端是Python

搜索引擎如何跟踪URL?他们是否保留一个URL,然后使用它解析的内容,或者是否丢弃与解析内容不同的URL,并且只关心解析的版本


谢谢

除了关于特定网站的“神奇”知识之外,没有办法知道“/index.php”与fetching“/”是一样的


所以,如上所述,您的问题是不可能解决的。

我会将3个链接另存为单独的,因为您永远无法可靠地判断它们解决的是同一页面。这完全取决于服务器(我们无法控制)如何解析url

因此,如果用户1在“”中键入,用户2在“”中键入,用户3在“www.facebook.com”中键入,我如何才能最好地将它们“转换”为所有这些解析的结果:

您可以通过修复无效的URL来解析用户3
www.facebook.com
不是一个URL,但是你可以猜到
http://
应该在开头。空路径部分与
/
路径相同,因此您可以确定它也需要在末尾。一个好的URL解析器应该能够做到这一点

您可以通过向URL发出HTTP HEAD请求来解析用户2。如果返回的状态代码为
301
,则会在
位置
响应头中永久重定向到真实URL。Facebook这样做是为了将
Facebook.com
流量发送到
www.Facebook.com
,而这绝对是网站应该做的事情(即使在现实世界中,很多网站并不是这样)。您可以考虑允许在<代码> 3xx < /代码>族中的其他重定向状态代码来执行同样的操作;这确实不是正确的做法,但有些网站使用
302
而不是
301
进行重定向,因为它们有点厚

如果你有时间和网络资源(加上更多的代码来防止这个特性被滥用给你或其他人),你也可以考虑获取目标网页并分析它(假设它不是HTML)。如果页面中有

元素,您也应该将该URL视为正确的URL。(查看源:堆栈溢出会执行此操作。)

然而,不幸的是,用户1的情况无法解决。Facebook在
/
/index.php
上分别提供了一个页面,尽管我们可以看到它们并说它们是一样的,但没有技术方法来描述这种关系。在理想的情况下,Facebook将包括一个
301
重定向响应或一个
来告诉人们
/
是访问特定资源的正确格式URL,而不是
/index.php
(反之亦然)。但事实上,大多数数据库驱动的网站也没有这样做

为了避免这种情况,一些搜索引擎(*)比较不同[子]域的内容,并在一定程度上比较同一主机上的不同路径,如果内容足够相似,则猜测它们是相同的。当然,这需要大量的工作,需要大量的存储和处理,并且最终不是非常可靠

除了像user 3那样修复URL之外,我真的不会为这些事操心太多。从您的描述来看,“相同”的页面似乎没有必要共享实际的标识,除非您没有提到某个特定的用例

(*:好吧,不管怎样,谷歌;更传统的网站传统上不会也很乐意为同一页面提供多个链接,但我认为其他专业现在也在做类似的事情。)