domingo, 16 de enero de 2011

Ayuda para migrar de dominio

Los sitios web de hoy en día están en constante ajetreo y como no queremos que esa información se pierda y mucho menos generar errores en la red de internet, lo mejor es poder asegurar la migración de datos sin errores.
Partiendo de la base de que las redirecciones en HTML puro no funcionan, al menos no para lo que nosotros queremos. Esto significa que hacer una redirección con el meta-refresh o a través de JavaScript no sirven para migrar contenidos. Un detalle a tener en cuenta es que esto se ha usado tiempo atrás como método de spam, así que hay muchas posibilidades de que los buscadores consideren tu sitio un poco indeseable.
En estos casos en los que no disponemos de un sistema para generar redirecciones 301 programadas lo mejor es utilizar el sistema de “rel=canonical” que propuso Google y el resto de buscadores y que, en algunos casos, se puede usar para redirigir tráfico entre dominios.
¿Se puede utilizar rel=”canonical” para sugerir una URL canónica de un dominio completamente distinto? 
Existen situaciones en las que no resulta fácil configurar los redireccionamientos. Así ocurre, por ejemplo, cuando hay que realizar una migración a un nuevo nombre de dominio a través de un servidor web que no puede crear redireccionamientos de servidor. En esos casos se puede utilizar el elemento de enlace rel=”canonical” para especificar la URL exacta del dominio que se prefiere para la indexación. Aunque el elemento de enlace rel=”canonical” se considera una sugerencia y no una directiva incuestionable, intentamos seguirlo siempre que es posible.

Básicamente sería incluir en el “head” de cada una de las páginas a redireccionar algo como:
<link rel="canonical" href="http://www.nuevodominio.com/nueva-carpeta/nuevo-fichero.html">
En el caso en el que sí que tengamos acceso al menos al servidor Apache, aunque no tengamos un lenguaje de programación para hacerlo, es utilizar el .htaccess del servidor. Por norma general, debería de funciona, aunque si tu proveedor de Internet es un poco rata puede que no te sirva mucho…
En este caso tenemos un par de opciones… la más sencilla sería esta…

Redirección 301 usando .htaccess
Redirect 301 /vieja-carpeta/viejo-fichero.html http://www.nuevodominio.com/nueva-carpeta/nuevo-fichero.html
Otra opción es usar el mod_rewrite, también del .htaccess y que en este caso usaríamos, por ejemplo, para controlar si el sitio tiene o no las www.

Redirección 301 usando mod_rewrite
RewriteEngine On
RewriteCond %{http_host} ^nuevodominio.com
RewriteRule ^(.*) http://www.nuevodominio.com/$1 [R=301,L]

Redirección 301 usando Internet Information Server (IIS)
En el Internet Services Manager, hacer botón derecho en el fichero o carpeta a redireccionar.
  • Seleccionar la opción: redireccionar a una URL.
  • Añadir la dirección URL de destino
  • Seleccionar la opción URL exacta y redirección permanente.
  • Pulsar en Aplicar / OK

Redirección 301 usando ASP
<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "http://www.nuevodominio.com/"
%>

Redirección 301 usando ASP.net
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.nuevodominio.com/");
}
</script>

Redirección 301 usando ColdFusion
<cfheader statuscode="301" statustext="Moved permanently">
<cfheader name="Location" value="http://www.nuevodominio.com/">

Redirección 301 usando Java
<%
response.setStatus(301);
response.setHeader("Location", "http://www.nuevodominio.com/");
response.setHeader("Connection", "close");
%>

Redirección 301 usando Perl
$q = new CGI;
print $q->redirect(" http://www.nuevodominio.com/ ");

Redirección 301 usando PHP
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.nuevodominio.com/");
exit;
?>

Redirección 301 usando Ruby o Ruby on Rails
head :moved_permanently, :location => "http://www.nuevodominio.com/


Estas redirecciones mandarían cualquier página a la principal, y no a la correspondiente. para eso, por ejemplo en PHP, se podría hacer algo como esto:
<?php
header("HTTP/1.1 301 Moved Permanently");
$accion = "Location: http://www.nuevodominio.com".$_SERVER["REQUEST_URI"];
header($accion);
?>

En este caso se incluye la variable de servidor REQUEST_URI que lleva toda la dirección URL exceptuando el dominio…
con esto y un bizcocho hasta mañana a las 8. Espero que sirva de ayuda para los que necesiten migrar de dominio.