这是我的设置:
$url1 = "www.gyngen.dk";
$url2 = "gyngen.dk";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 20);
$result = curl_exec($curl);
curl_close($curl);
使用
$url1
将产生空字符串,而 $url2
将按预期工作。但是,为什么我的 stackoverflow 同胞们,在涉及“www.”时,cURL 如此微妙,而在我的浏览器(firefox)中使用 URL 时(根据我的经验)并不重要。
提前致谢!
cURL 不遵循重定向,转到
www.gyngen.dk
会使用重定向将您重定向到 gyngen.dk
。由于没有重定向,cURL 会收到空的网页内容。
www。和裸域是两个独立的域。 Web 浏览器有时会尝试为不太了解的人掩盖这种差异,如果在其中一个地址找不到页面,它有时会尝试另一个地址。实际上,这些域显然是它们自己的,并且curl 并没有尝试隐藏这一点。
网站/网页在 www 域中可用,因此当我们使用时
curl https://<domain> or curl <domain>
我们收到带有 Location 标头的 301 响应,可以使用以下命令进行检查
curl -X HEAD -I google.com
因此,为了获得 HTML 页面响应,我们要么使用 www,要么我们可以要求curl 根据位置标头进行重定向,例如
curl -L <domain>
附注浏览器会自动为我们完成此操作。