我有一个网址,例如xyz.com/123456。当我在浏览器中打开它时,url会被重定向到xyz.com/test_user,其中123456是用户ID,test_user是用户名。我想从第一个URL重定向后提取第二个URL。
我编写了一个脚本,可以从文本文件中获取不同用户ID的输入并生成第一个URL。我想在浏览器中或通过cmd以某种方式运行URL,并获取重定向的第二个URL。 我尝试在Curl中使用EFFECTIVE_URL,但它一直返回第一个URL。我也尝试了$ _SERVER,但它返回脚本文件而不是URL。
有什么办法可以让我在重定向后获得在浏览器窗口中输入的URL吗? 或者甚至可能没有在浏览器中打开URL我可以获得重定向的URL吗?
答案 0 :(得分:0)
看看这个: Get url after redirect
答案 1 :(得分:0)
有三个设置可以帮助您更快地获取重定向网址(无需实际等待curl重定向您)
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); //don't follow the redirect
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // do return the transfer
curl_setopt($ch, CURLOPT_HEADER, true); // do show the header
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //either get the certificates, or just disable checking
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
然后,当您最终执行请求时,您可以从标头匹配中找到重定向。
$url = 'https://www.facebook.com/4?_rdr=p'; //remember to add ?_rdr=p to the end of your URL
$response = curl_exec($ch);
preg_match_all('/^Location:(.*)$/mi', $response, $matches);
print_r($matches);
您的网址应位于$matches[0]
。
答案 2 :(得分:0)
当您使用PHP重定向时 - 一种选择是在用户登陆时设置$_SESSION
值,然后再重定向。 e.g
$_SESSION['original_url'] = $_SERVER[HTTP_HOST];
然后在您重定向到的页面上抓取:
$previous_url = $_SESSION['original_url'];