用Thinkphp6开发了api接口,为了该接口地址便于后续维护使用了路由添加上版本号,比如www.aaa.com/api/ip这个接口,路由后是www.aaa.com/api/v1/ip
API地址做主备切换,客户机先判断API地址是否有效,即用curl_getinfo请求www.aaa.com/api/v1/ip的状态码,发现返回404
应该返回200状态码才对,不知道为何返回404(浏览器访问该地址状态码却是正常的200)
下面是PHP查询目标URL状态码的函数
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
路由设置为:Route::get('api/v1/:function', 'api/:function');
不知道是BUG还是我哪里设置错了?完整测试代码:
$url = 'http://localhost:10000/index.php/api/v1/iplocation?ip=14.153.11.23';
echo get_http_code($url); // 显示为404
function get_http_code($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true); // remove body
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $httpCode;
}
最佳答案
