Página 1 de 1

Obtener la última URL después de un error 404

NotaPublicado: 2009-03-16 23:17 @012
por netsoul
Tengo un pequeño problema, creo que es muy básico, pero me gustaría saber si se podría resolverse. Dado un pequeño código para hacer Request a una página.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use LWP::UserAgent;
use HTTP::Request;

$b = LWP::UserAgent->new() or die "No se puede inicializar el modulo.";
$b->agent('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)');

$host = "http://www.[sitio].com";
$respuesta = $b->request(HTTP::Request->new(GET=>$host));
$contenido = $respuesta->content;
print $contenido;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4



Cuando normalmente se visita una página usando un navegador (Firefox) toda información del código HTML es almacenada en dicho navegador que podría ser vista revisando el código fuente. Sin embargo, cuando ocurre un error 404 del sitio (normalmente cuando la dirección no existe o se digita algo equivocado) poca información se almacena, como por ejemplo: NOT FOUND Error 404, o algo similar.

Dada esa información es almacenada en la variable $contenido del código de arriba. Pero sin embargo, existe un dato que no sabría cómo obtenerlo (y que no está dado en la variable $contenido): sería la última URL que un navegador retorna al producirse dicho error.

Por ejemplo:
  1. URL escrito: http://www.[sitio].com/paginaexiste.html
    Resultado: Normal.
    URL Retornado: http://www.[sitio].com/paginaexiste.html
  2. URL escrito: http://www.[sitio].com/paginaNOexiste.html
    Resultado: Error 404 Not Found
    URL Retornado: http://www.[sitio].com/cualquierCosa.html
Espero que se haya entendido.

Gracias.

NotaPublicado: 2009-03-17 03:52 @203
por explorer
Quien devuelve el 404 es el servidor web. Y ese error no deriva a ningún otro URL. Con un error 301 o 302, el servidor sí que redirige a otro sitio.

NotaPublicado: 2009-03-17 08:01 @376
por danimera
Hay que obtenerlo desde el mismo servidor... yo lo hago editando las páginas de error con la línea
<!--#echo var="HTTP_REFERER" -->

NotaPublicado: 2009-03-30 19:42 @862
por netsoul
Gracias. Voy aprendiendo poco a poco.