Hay ocasiones en que necesitamos redirigir nuestra web actual (o alguna página concreta de la misma) a un nuevo destino. Los casos más comunes son:

  • Hemos trasladado nuestro sitio web de dirección y queremos que nuestros visitantes enlacen directamente con el nuevo sitio (para no perder visitas).
  • Tenemos un nuevo subdominio y queremos redirigir sus consultas a un subdirectorio concreto de nuestro dominio.
  • Facilitar de forma automatiza una entrada a procotolo seguro.

En estas situaciones son varias las opciones que tenemos disponibles, mediante código, para enlazar a nuestros visitantes a la nueva dirección web. Veamos algunos ejemplos de cómo podemos hacerlo, de forma muy sencilla:

 

Redirección web en HTML

Ejemplo de redirección con espera de 10 segundos:

<html>

 <head>

  <meta http-equiv="Refresh" content="10;url=http://www.dominio.com">

 </head>

 <body>

  <p>Hemos cambiado de dirección. En 10 segundos enlazarás a la nueva 

  página. En caso contrario, pulsa en el siguiente enlace

  <a href="http://www.dominio.com">www.dominio.com</a></p>

 </body>

</html>

 

Ejemplo de redirección sin espera:

<html>

 <head>

  <meta http-equiv="Refresh" content="0;url=http://www.dominio.com">

 </head>

</html>
 

Redirección web en Javascript

Ejemplo de redirección con espera:

<html>

 <head>

  <script type="text/javascript">

  function redirection(){  

  window.location ="http://www.dominio.com";

  }  setTimeout ("redirection()", 10000); //tiempo en milisegundos

  </script>

 </head>

 <body>

  <p>Hemos cambiado de dirección. En 10 segundos enlazarás a la nueva 

  página. En caso contrario, pulsa en el siguiente enlace  

  <a href="http://www.dominio.com">www.dominio.com</a></p>

 </body>

</html>

 

Ejemplo de redirección sin espera:

<html>

 <body>

  <script type="text/javascript">

  window.location="http://www.dominio.com";</script>

 </body>

</html>
 

Redirección web mediante PHP

Ejemplo de redirección sin espera:

<?php

//Si queremos informar de que se trata de un cambio permanente (error 301)

//header( "HTTP/1.1 301 Moved Permanently" );

header ("Location: http://www.dominio.com");

?>

 

Ejemplo de redirección de subdominio.dominio.com a www.dominio.com/subdominio:

<?php 

// Obtenemos la página en la que ha estado antes el visitante 

$pagina_anterior = "{$_SERVER['HTTP_HOST']}";

// Extraemos el subdominio con una expresión regular 

preg_match('/^(www\.)?(.+)?.dominio.com/',$pagina_anterior,$encontrados); 

// Si hay un subdominio 

if ($encontrados[2]=="subdominio") { 

 // Redireccionamos a www.dominio.com/subdominio 

 Header ("Location: http://www.dominio.com/subdominio"); 

 exit; 

} 

?>

Debemos tener en cuenta que en PHP no podemos realizar una redirección cuando se ha mandado contenido al navegador, pero si la redirección depende de algo que se controla posteriormente a la generación de contenido HTML, podemos trabajar con buffer, de la siguiente forma:

<?php

ob_start();

?>

<html> 

<body> 

Texto de la página 

</body> 

</html>

<?

ob_end_clean();

header ("Location: http://www.dominio.com");

?>

Normalmente las redirecciones se realizan en base a variables que están recogidas en el servidor web. Puede consultar las variables que se ejecutan en su servidor ejecutando un comando phpinfo:

<?

echo phpinfo();

?>

Y recogerlas utilizando un ejemplo como el siguiente:

<?

$encabezado  = $_SERVER['HTTP_HOST'];

$ruta = $_SERVER['DOCUMENT_ROOT'];

$fichero = $_SERVER['PHP_SELF'];

echo $encabezado;

echo "<br>";

echo $ruta;

echo "<br>";

echo $fichero;

?>

Redirección mediante ASP

<%

  Response.Redirect ("http://www.dominio.com")

%>

Igual que en PHP, debemos tener en cuenta que no podemos realizar una redirección cuando se ha mandado contenido al navegador, pero si trabajamos con buffer porque la redirección depende de algo que se controla posterioremente a la generación de contenido HTML podemos vaciarlo así:

<% 

Response.Buffer=true 

%>

<html> 

<body> 

Texto de la página 

</body> 

</html>
<% 

Response.Clear 

Response.Redirect ("http://www.dominio.com")

%>

Normalmente las redirecciones se realizan en base a variables que están recogidas en el servidor web. Puede consultar las variables que se ejecutan en su servidor ejecutando el siguiente código :

<TABLE BORDER="1" WIDTH="90%" BORDERCOLOR="#304B58">

<TR>

<TD valign="top"><B>Variable</B></TD>

<TD valign="top"><B>Value</B></TD>

</TR>

<% For Each variable in Request.ServerVariables%>

<TR>

<TD><FONT FACE="Times New Roman" SIZE="1"><%= variable %></FONT></TD>

<TD><FONT FACE="Times New Roman" SIZE="1">

<%

If Request.ServerVariables(variable) = "" Then

   Response.Write " "

Else

   Response.Write Request.ServerVariables(variable)

End If

%>

</FONT></TD>

</TR>

<% Next %>

</TABLE>

Y recogerlas utilizando un ejemplo como el siguiente :

<%

encabezado  = Request.ServerVariables("SERVER_NAME")

ruta = Request.ServerVariables("APPL_PHYSICAL_PATH")

fichero = Request.ServerVariables("SCRIPT_NAME")

Response.Write encabezado

Response.Write "<br>"

Response.Write $ruta

Response.Write "<br>"

Response.Write $fichero

%>