Redirect 301 para preservar el PageRank

Redirect 301

Supongamos que estoy haciendo un rediseño de mi web para conseguir una mejora en SEO. Las urls actuales a mi listado de productos son de este estilo:

http://manelperez.com/products.php?id=13

Pero lo que realmente nos interesaría tener una url semántica de este estilo:

http://manelperez.com/sony/cyber-shot/dsc-t500-color/13

Claro que, no queremos perder el PageRank de la url antigua que tanto nos ha costado acumular ¿qué podemos hacer? Pues la solución pasa por realizar una redirección permanente (o Redirect 301). Cuando Google recibe una cabecera http 301, entiende que la dirección a la página ha cambiado de manera permanente y pasa toda la información a la nueva url.

Además de asegurarnos de migrar el PageRank, estaremos recuperando a aquellos usuarios que tienen guardadas las direcciones antiguas en sus bookmarks o favoritos.

Aquí os dejo la manera de realizar esta redirección en diferentes lenguages de programación:

HTTP Redirect

En este caso en concreto, debemos añadir la siguiente información en un archivo con el nombre .htaccess colocado en la raiz de la página o directamente en el VirtualHost.

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^/products.php?id=([0-9]*)$ /sony/cyber-shot/dsc-t500-color/$1 [R=301,L]

Si nuestro cambio es más profundo y lo que hemos hecho es adquirir un nuevo dominio, podemos redirigir al nuevo cualquier url del antiguo de la siguiente manera:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

PHP Redirect

<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://manelperez.com/sony/cyber-shot/dsc-t500-color/13" );
?>

ASP Redirect

<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://manelperez.com/sony/cyber-shot/dsc-t500-color/13"
%>

ASP .NET Redirect

<script runat="server">
private void Page_Load(object sender, System.EventArgs e) {
    Response.Status = "301 Moved Permanently";
    Response.AddHeader("Location","http://manelperez.com/sony/cyber-shot/dsc-t500-color/13");
}
</script>

JSP (JAVA) Redirect

<%
response.setStatus(301);
response.setHeader( "Location", "http://manelperez.com/sony/cyber-shot/dsc-t500-color/13" );
response.setHeader( "Connection", "close" );
%>

CGI PERL Redirect

$q = new CGI;
print $q->redirect("http://manelperez.com/sony/cyber-shot/dsc-t500-color/13");

Ruby On Rails Redirect

def old_action
headers["Status"] = "301 Moved Permanently"
redirect_to "http://manelperez.com/sony/cyber-shot/dsc-t500-color/13"
end

ColdFusion Redirect

<cfheader statuscode="301" statustext="Moved permanently">
<cfheader name="Location" value="http://manelperez.com/sony/cyber-shot/dsc-t500-color/13">