Cherche script pour avoir l'URL finale suite à 1 redirection


loran750
WRInaute passionné
WRInaute passionné
 
Messages: 2247
Inscription: 15 Mar 2005

Cherche script pour avoir l'URL finale suite à 1 redirection

Message le Mar Sep 25, 2007 23:23

bonjour,

je cherche une classe ou une librairie qui, à partir d'une URL de redirection, me permet d'obtenir le lien "final", que ce soit une redirection permanente (301) ou temporaire (302), ou autre.

un peu à la manière des Tools de WRI ou Webmaster-Hub qui proposent via leurs interfaces respectives d'obtenir les entêtes HTTP, et ce, jusqu'à 8 redirections successives.

Je n'arrive pas à trouver ça.

Merci


kylliox
WRInaute discret
WRInaute discret
 
Messages: 57
Inscription: 20 Oct 2006

Message le Mer Sep 26, 2007 0:00

bonjour,
je me souviens avoir bien gallérer pour l'écrire :

Code: Tout sélectionner
$url = "http://www.linuvers.com/";
$headers = get_headers($url);
list($http, $code, $valide) = explode(" ", $headers['0'], 3);

echo $code;


Dans la variable $code tu as le numéro de redirection
Voila


loran750
WRInaute passionné
WRInaute passionné
 
Messages: 2247
Inscription: 15 Mar 2005

Message le Mer Sep 26, 2007 0:11

merci beaucoup !


kylliox
WRInaute discret
WRInaute discret
 
Messages: 57
Inscription: 20 Oct 2006

Message le Mer Sep 26, 2007 0:12

En fait la fonction get_header retourne ce tableau :
Code: Tout sélectionner
    [0] => HTTP/1.1 200 OK
    [Date] => Sat, 29 May 2004 12:28:14 GMT
    [Server] => Apache/1.3.27 (Unix)  (Red-Hat/Linux)
    [Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT
    [ETag] => "3f80f-1b6-3e1cb03b"
    [Accept-Ranges] => bytes
    [Content-Length] => 438
    [Connection] => close
    [Content-Type] => text/html


cela ne donne pas l'url final mais permet quand même de faire la distinction en cas de redirection


kylliox
WRInaute discret
WRInaute discret
 
Messages: 57
Inscription: 20 Oct 2006

Message le Mer Sep 26, 2007 9:07

En cas de redirection on récupére la nouvelle url avec :

Code: Tout sélectionner

    list($location, $newhttp) = explode(" ", $headers['3'], 2);



voili, voila


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Mer Sep 26, 2007 9:24

Regarde curl et plus particulièrement l'option :
Code: Tout sélectionner
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true)

tu récupère l'url finale et le code HTTP :
Code: Tout sélectionner
$url_reelle = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités