php 獲取301跳轉後真實的url

在php採集中常常遇到有URL 301重定向的狀況,若是出現了這樣的狀況,有可能出現形成未知的結果,由於主機名不同了。咱們的採集中主機名不能用301重定向前的URL,要用重定向以後的URL。php

我在如下PHP的例子中介紹下怎麼獲取301定向後真實的URL,目前我知道有兩種方法服務器

一、用get_headers函數;二、用cURL函數

現介紹利用get_headers() 函數獲取http頭 php 自帶的get_headers()取得服務器響應一個 HTTP 請求所發送的全部標頭。 獲取301狀態確定沒問題。google

301定向的例子: google.com 會301跳轉至 www.google.com 再www.google.com 會302跳轉至 www.google.com.hkurl

我寫了個php函數 其php函數做用: 輸入 google.com 獲得 www.google.com.hk 輸入 www.google.com 獲得 www.google.com.hk 輸入 www.google.com.hk 獲得 www.google.com.hkget

<?php /* @param str $url 查詢 $return str 定向後的url的真實url */ function getrealurl($url){ $header = get_headers($url,1); if (strpos($header[0],'301') || strpos($header[0],'302')) { if(is_array($header['Location'])) { return $header['Location'][count($header['Location'])-1]; }else{ return $header['Location']; } }else { return $url; } } $url = 'http://google.com'; $url = getrealurl($url); echo '真實的url爲:'.$url; //真實的url爲:http://www.google.com.hk/ ?>io

相關文章
相關標籤/搜索