为什么'www。'网址前缀会影响cURL是否可以抓取网页内容?

Here's my setup:

$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);

Using $url1 will result in an empty string and $url2 will work as intended. But why my fellow stackoverflowians, is cURL so delicate when it comes to the presence of ‘www.’ , when it (in my experience) doesn’t matter when using URLs in my browser (firefox).

Thanks in advance!

http://www.gyngen.dk redirects to http://gyngen.dk.

Your browser follows the redirect transparently.

PHP/cURL, with your settings, does not. This question explains how to change that.

The www. and bare domains are two separate domains. Web browsers will sometimes try and obscure this difference for people who do not know any better, and if a page is not found at one of the addresses, it will sometimes try the other. In reality, the domains are distinctly their own, and curl does not make any attempt to hide this.

cURL does not follows redirects and going to www.gyngen.dk would redirect you to gyngen.dk using redirect. And since there is no redirect cURL receives empty web content.