さて、これらのことをすばやくデバッグする方法は次のとおりです(常に機能するとは限りませんが、最初に道路のゴムを叩いて接触を増やします。通常はこれでうまくいきます):
要件: コマンドライン用の Curl (おそらく地球上のすべてのコンピューター システムで利用可能です。まだ持っていない場合は、ホームページにアクセスしてください):
-i
ヘッダーもリストすることです(-I
データが多すぎる場合はHEADリクエストに使用します)そして-v
詳細のために(何がどこに行くかを示します):
$ curl -iv 'http://celebcrust.com/?p=15055'
* Adding handle: conn: 0xa50260
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0xa50260) send_pipe: 1, recv_pipe: 0
* About to connect() to celebcrust.com port 80 (#0)
* Trying 70.32.78.224...
* Connected to celebcrust.com (70.32.78.224) port 80 (#0)
> GET /?p=15055 HTTP/1.1
> User-Agent: curl/7.30.0
> Host: celebcrust.com
> Accept: */*
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Date: Sat, 31 Aug 2013 14:29:54 GMT
Date: Sat, 31 Aug 2013 14:29:54 GMT
* Server Apache is not blacklisted
< Server: Apache
Server: Apache
< X-Pingback: http://celebcrust.com/xmlrpc.php
X-Pingback: http://celebcrust.com/xmlrpc.php
< X-Powered-By: PleskLin
X-Powered-By: PleskLin
< Content-Length: 159
Content-Length: 159
< Connection: close
Connection: close
< Content-Type: text/html; charset=UTF-8
Content-Type: text/html; charset=UTF-8
<
<META HTTP-EQUIV=Refresh CONTENT="0; URL=http://www.celebgossip.com/2013/04/willie-nelson-celebrates-80th-birthday-stoned-and-auditi
oning-for-gandalf-39425/">
* Closing connection 0
これが示すように、サーバーはヘッダーを送信しないため、ヘッダーが表示されないLocation:
ことが完全に説明されます。
代わりに、ハイパーテキスト クライアント (Web ブラウザー) によって解析される応答本文で HTML を送信し、Refresh:
HTTP と同等のヘッダー値を取得します。
それはcurlのビジネスではありません。HTML パーサーを追加してこれらをチェックする必要があります。そのメソッドDOMDocument
を使用することをお勧めし->loadHTML()
ます。