【发布时间】:2010-09-20 02:42:01
【问题描述】:
检查给定 url 是否指向有效文件(即不返回 404/301/等)的最佳方法是什么?我有一个脚本可以在页面上加载某些 .js 文件,但我需要一种方法来验证它接收到的每个 URL 都指向一个有效文件。
我仍在翻阅 PHP 手册,以查看哪些文件函数(如果有)实际上可以与远程 URL 一起使用。当我找到更多细节时,我会编辑我的帖子,但如果有人已经走过这条路,请随时加入。
【问题讨论】:
标签: php
检查给定 url 是否指向有效文件(即不返回 404/301/等)的最佳方法是什么?我有一个脚本可以在页面上加载某些 .js 文件,但我需要一种方法来验证它接收到的每个 URL 都指向一个有效文件。
我仍在翻阅 PHP 手册,以查看哪些文件函数(如果有)实际上可以与远程 URL 一起使用。当我找到更多细节时,我会编辑我的帖子,但如果有人已经走过这条路,请随时加入。
【问题讨论】:
标签: php
其中一种方法是请求 url 并获得状态码为 200 的响应,除此之外,真的没有什么好的方法,因为服务器可以选择处理它喜欢的请求(包括给你存在的文件的其他状态代码,但由于多种原因您无权访问)。
【讨论】:
如果您的服务器没有启用 fopen 包装器(任何具有良好安全性的服务器都不会启用),那么您将不得不使用 CURL functions。
【讨论】:
file_get_contents 有点过头了,因为它足以让 HTTP 标头做出决定,因此您需要使用 curl 来执行此操作:
<?php
// create a new cURL resource
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
// grab URL and pass it to the browser
curl_exec($ch);
// close cURL resource, and free up system resources
curl_close($ch);
?>
【讨论】: