如何知道两个URL是否通向同一页面

时间:2010-02-08 04:28:08

标签: php

我想写一个小脚本来了解两个URL是否通向同一页面。例如:http://google.comhttp://google.com/#将导致相同的网址。有时,http://URL1.comhttp://URL2.com也会导致同一页面,但它们不是相同的网址。

有一种简单的方法吗?

如果您需要更多信息,请告诉我,我将编辑帖子

注意:这不是一个家庭作业问题,所以请尽量提供帮助。

谢谢大家!

3 个答案:

答案 0 :(得分:4)

这是一种非常肮脏的方式,但我想这就是你想要的:

if(file_get_contents('http://URL1.com') === file_get_contents('http://URL2.com')) {
    // Leading to the same page!
}

请注意,如果页面稍有变化(例如,请求恰好在13:45:59到13:46:00之间),cookie或任何动态的话,它将无法工作。

答案 1 :(得分:2)

因此...

这可能非常棘手,因为没有“真正的”方法来检测它。您可以检测到Location标头以查看是否存在重定向,但这并非万无一失,因为有些人会进行内部重定向。 (意思是,stackoverflow.com看起来与stackoverflow2.com相同。)

我能想到的唯一真正的方法是检查页面的内容:

AKA

$c = curl_init();
curl_setopt( $c, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $c, CURLOPT_URL, 'http://localhost/admin/' );
$content1 = curl_exec( $c );
curl_close($c);

$c = curl_init();
curl_setopt( $c, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $c, CURLOPT_URL, 'http://localhost/admin/' );
$content2 = curl_exec( $c );
curl_close($c);

if($content1 == $content2)
{
    // same content
}

如果您愿意,可以将其缩短为仅检查内容长度或其他内容,但您无法简单地从标题中进行说明。

答案 2 :(得分:0)

您可以使用parse_url()来处理琐碎的案件。要检测重定向,您必须使用HTTP facilities的其中一个部分来获取标头并检测Location标头。