Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP规范化给定基本url的uri部分_Php_Url_Normalization_Web Crawler - Fatal编程技术网

使用PHP规范化给定基本url的uri部分

使用PHP规范化给定基本url的uri部分,php,url,normalization,web-crawler,Php,Url,Normalization,Web Crawler,首先,我是为一个网络爬虫(又名蜘蛛,又名蠕虫…)做这件事的 给定两个字符串(基本url和相对url),我需要确定绝对url。 当涉及到“SEO友好”的废话时,尤其令人困惑,例如: 基本url: 找到url:/test.php?aaa 我怎么知道上面的不是文件夹? 如;绝对路径为: 或: ? 混淆源于是否有索引在起作用。“/test/index.php”或“/index.php”仅通过检查URL无法解决此问题。 您说您需要给定基本URL和相对URL的绝对URL。完整URL是基本URL和相对UR

首先,我是为一个网络爬虫(又名蜘蛛,又名蠕虫…)做这件事的

给定两个字符串(基本url和相对url),我需要确定绝对url。 当涉及到“SEO友好”的废话时,尤其令人困惑,例如:

基本url: 找到url:/test.php?aaa

我怎么知道上面的不是文件夹? 如;绝对路径为:

或:

?


混淆源于是否有索引在起作用。“/test/index.php”或“/index.php”

仅通过检查URL无法解决此问题。

您说您需要给定基本URL和相对URL的绝对URL。完整URL是基本URL和相对URL的连接。正如你所看到的,知道这一点毫无帮助

http://example.com/directory/index.php
http://example.com/directory/
可以合法地引用两种不同的资源

http://example.com/directory/index.php
http://example.com/directory/foo/bar/baz.php
可以合法地引用相同的最终资源

在上面的第二个示例中,哪个是规范URL?这不是一定可以通过计算确定的。规范URL是您选择作为规范URL的URL

实际上,您在这里面临两个问题:

  • 两个不同的URL何时引用同一资源
  • 哪个URL是标准URL
  • 1。两个不同的URL何时引用同一资源?

    这不能通过以任何方式比较URL来确定。这只能通过比较资源本身(即内容和HTTP头)来确定

    ETag-

    简而言之,ETag是一个HTTP头,对于资源来说是唯一的。其目的是进行缓存验证,即缓存中的内容是否与当前的内容相同

    至少来自同一主机的两个相同资源将具有相同的ETag头值。如果可能,请使用此选项(并非所有web服务器都将返回ETag头)

    HTTP头和内容比较

    两个资源何时相同?当内容类型和内容相同时

    使用内容类型标题比较内容类型。比较内容本身是字符串比较的一个简单例子

    如果您存储先前找到的资源的属性并将这些与新发现的资源进行比较,则不需要考虑资源的全文来进行比较,哈希就可以了。 就PHP而言,将为您提供一个非常方便的OOAPI,用于检查HTTP头和资源的完整内容。该函数是生成唯一散列的一个选项。还有其他的

    2。哪个URL是标准URL?


    挑一个,坚持下去。默认情况下,对于同一资源,一个URL并不比另一个URL更规范。为了简单起见,你可以认为两个URL中最短的是标准形式。

    我认为蠕虫是不同的;也许是一个老校名?嗯,这似乎是指一个实际的应用程序,它是这样命名的。蠕虫一词通常指某种类型的恶意软件。但我不想争论,我只是注意到了;)非常有用的帖子,但是,我如何正确连接两个部分而不首先生成大量404?@Christian:我明白了,我没有完全理解你的问题。基本url:找到的url:/test.php?aaa=>绝对url: