Jör*_*örg 2 php redirect http-headers
嘿那里,
我目前正在开发一个基于PHP的工具来监控相当多的URL及其重定向状态.我花了很长时间才找到获取HTTP响应头内容的最佳方法来提取当前的重定向代码和位置.这就是目前的做法:
$resource = fopen( $url, 'r' );
$metadata = stream_get_meta_data( $resource );
$metadata = $metadata['wrapper_data'];
// Looping through the array to find the necessary fields
Run Code Online (Sandbox Code Playgroud)
这适用于我正在监控的95%的URL.还有一些我通过解析网站在执行重定向之前返回的实际HTML来解决它,因为它包含类似"此网站已被移动到此处"的内容.这似乎不是一个非常强大的解决方案,但它在一些情况下有所帮助.
这仍然留给我一些我无法自动检查的URL.
像Ask Apache HTTP Headers Tool这样的工具似乎更可靠,我想知道什么是获得重定向信息的更好方法?
您还可以尝试使用curl,尽可能短的检索所有标头的示例,如下所示:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://stackoverflow.com');
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header');
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_exec($ch);
function read_header($ch, $string) {
print "Received header: $string";
return strlen($string);
}
Run Code Online (Sandbox Code Playgroud)
输出:
[~]> php headers.php
Received header: HTTP/1.1 200 OK
Received header: Cache-Control: private
Received header: Content-Type: text/html; charset=utf-8
Received header: Expires: Mon, 31 Aug 2009 09:38:45 GMT
Received header: Server: Microsoft-IIS/7.0
Received header: Date: Mon, 31 Aug 2009 09:38:45 GMT
Received header: Content-Length: 118666
Received header:
Run Code Online (Sandbox Code Playgroud)
当然,它只是你想要的标题,然后fsockopen也可以.除了GET之外,你应该使用HEAD,因为你只需要标题,而不是内容.
另外,curl也适用于https url-s(如果你已经用ssl支持编译它).
| 归档时间: |
|
| 查看次数: |
2329 次 |
| 最近记录: |