我正在使用curl让php向某个网站发送http请求,并将CURLOPT_FOLLOWLOCATION设置为1,以便它遵循重定向。那么,我可以找出它最终重定向的位置吗?找出卷曲被重定向的位置
5
A
回答
6
你可以这样做:
curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); // returns the last effective URL
-1
如果您不需要归身,你可以这样来做:
集CURLOPT_HEADER
和CURLOPT_NOBODY
。标题“位置”应该被返回并且将包含新的URL。然后根据需要用新的URL执行请求。
2
$ch = curl_init("http://websitethatredirects.com");
$curlParams = array(
CURLOPT_FOLLOWLOCATION => true,
);
curl_setopt_array($ch, $curlParams);
$ret = curl_exec($ch);
$info = curl_getinfo($ch);
print $info['url'];
这会告诉你,你最终被重定向到URL。
0
测试这段代码。它适用于我:
$urls = array(
'http://www.apple.com/imac',
'http://www.google.com/'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
foreach($urls as $url) {
curl_setopt($ch, CURLOPT_URL, $url);
$out = curl_exec($ch);
// line endings is the wonkiest piece of this whole thing
$out = str_replace("\r", "", $out);
// only look at the headers
$headers_end = strpos($out, "\n\n");
if($headers_end !== false) {
$out = substr($out, 0, $headers_end);
}
$headers = explode("\n", $out);
foreach($headers as $header) {
if(substr($header, 0, 10) == "Location: ") {
$target = substr($header, 10);
echo "[$url] redirects to [$target]<br>";
continue 2;
}
}
echo "[$url] does not redirect<br>";
}
相关问题
- 1. 如何找到我将使用卷曲重定向的位置?
- 2. 重定向与卷曲/ HttpClient的:头 “位置” 失踪
- 3. PHP /卷曲重定向
- 4. 找出Jquery ajax请求被重定向到的位置
- 5. PHP多卷曲 - 找出什么代理被用于特定的卷曲手柄
- 6. Ajax中的卷曲式重定向
- 7. 卷曲和重定向到ssl网站
- 8. 遵循重定向与卷曲在php
- 9. 卷曲重定向不起作用?
- 10. 重定向后卷曲不工作
- 11. 卷曲重定向,不工作?
- 12. 卷曲不能按照重定向
- 13. 卷曲--form文件重定向
- 14. 卷曲重定向与手动重定向差异
- 15. 重定向卷曲库函数的输出到图像文件
- 16. PHP:查找重定向URL的位置
- 17. PHP的卷曲登录Instagram的进入重定向循环
- 18. 优化卷 - 分析输出重定向
- 19. 系统找不到指定的卷曲
- 20. 尝试使用卷曲登录时出现奇怪的重定向问题
- 21. 卷曲跟踪定位误差
- 22. HTTP_REFERRER和位置重定向
- 23. 捕获重定向位置
- 24. 找出线程被阻塞的位置
- 25. 卷曲连接被拒绝
- 26. 曲奇被重置/歼灭
- 27. 在结帐时使用卷曲停止重定向
- 28. 外部网站复制(卷曲)网站,如何重定向
- 29. 获取响应XML和重定向与PHP卷曲
- 30. PHP卷曲重定向到另一个网址
不错。不知道这个。考虑到卷曲选项的数量,它并不总是很容易找到它们。谢谢。 – 2009-11-06 15:21:56