2009-01-09 27 views

Trả lời

6

Thực ra, tôi thấy điều này hoạt động tốt nhất:

function GetURL($URL) 
    { 
      $ch = curl_init($URL); 

      curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); 


      curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 

      curl_exec($ch); 

      $code = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 

      curl_close($ch); 

      return $code; 
    } 
16
$ch = curl_init('http://www.yahoo.com/'); 
curl_exec($ch); 
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
if (($code == 301) || ($code == 302)) { 
    //This was a redirect 
} 
+0

Tuyệt vời - có cách nào để biết nơi muốn chuyển hướng đến không? – GeoffreyF67

+0

Hãy thử cURL bình thường với nó ... nó sẽ dẫn bạn đến nơi mà nó muốn bạn đến. – alex

+0

Câu trả lời hay, bao gồm hầu như tất cả các trường hợp có thể xảy ra. Tôi tin rằng 303 và 307 cấu thành chuyển hướng là tốt, mặc dù chúng ít phổ biến hơn - Tôi chỉ thấy chúng được sử dụng trong tài liệu cụ thể, không phải là thế giới thực. –

3

Đừng nhớ rằng không ai trong số các câu trả lời mà thường đưa ra cho câu hỏi này đưa vào chuyển hướng tài khoản do javascript mã hóa trong các tài liệu trả lại (hoặc Tôi nghĩ rằng một thẻ meta-refresh trong HTML.) Vì vậy, có thể là không có vấn đề gì bạn sẽ bỏ lỡ một số loại "chuyển hướng" khi thử nghiệm bằng cách sử dụng loại mã này.

Thật không may là cách duy nhất xung quanh việc này là để trình duyệt web thực sự truy cập trang web và sửa đổi trình duyệt web theo cách báo cáo javascript và chuyển hướng làm mới meta.

Chúc mừng!

+0

Trên thực tế, bạn có thể sử dụng công cụ javascript mà mozilla có mặc dù tôi không thể nhớ tên của nó vào lúc này. Nhưng yeah, bạn phải trong curl đó sẽ không bắt được chuyển hướng javascript. – GeoffreyF67

Các vấn đề liên quan