Redirecionando do Blogger para o Wordpress com permalinks padrão
Leonel Fraga de Oliveira 27/03/2010 18:58

Quando migrei do Blogger para o WordPress com hospedagem própria, me deparei com um pequeno problema: os permalinks personalizados não funcionavam de maneira adequada, na maioria deles dando erro de página não encontrada, sendo que ela existe na base de dados.

O servidor que hospeda meus blogs roda com IIS 7.0, e o recurso dos permalinks deve requerer um módulo de reescrita de URL (acho que é algo como url_rewrite) que provavelmente não deve estar implementado. Então, o acesso direto às páginas é feito através da URL padrão.

Como no NeoMatrix Tech não fiz a cagada burrada de apagar todos os posts, pesquisei por alguns tutoriais de como redirecionar as páginas do Blogger para o Wordpress. Mas a maioria deles funcionavam apenas com a estrutura de permalinks personalizados.

Mas, me debruçando mais um pouco sobre o Google, vi #comofas para fazer esse redirecionamento através da URL padrão. Vamos a ele:

- O que devo fazer na parte WordPress?

No seu blog WordPress, crie uma página PHP (Uau! Dessa vez não falei de ASP.NET aqui no NeoMatrix Tech!)chamada blogger-redirects.php, por exemplo, e utilize o seguinte código:

<?php

require($_SERVER['DOCUMENT_ROOT'].'/seublog/wp-blog-header.php');
$search_link = $_GET['p'];
$vars = explode('/', $search_link);
$num = count($vars) - 1;
$filename = $vars[$num];
$slug = str_replace(".html", "", $filename);

$SQL = "SELECT posts.* FROM $wpdb->posts AS posts WHERE posts.post_name = '$slug' LIMIT 1";
$posts = $wpdb->get_results("$SQL");

if ($posts) {
 foreach ($posts as $post) {
  $found_link = get_permalink($post->ID);
 }
}
else
{
  $found_link = "http://www.seudominio.com/blog";
}

?>

<html>
<head>
<title>Redirecionando...</title>
<script language="javascript"><!–
document.location.href="<?php echo ($found_link); ?>";
//–></script>

<meta http-equiv="refresh" content="6;url=<?php echo ($found_link); ?>">

</head>
<body>
<h1>Redirecionando...</h1>
<p>Você será redirecionado para <a href="<?php echo ($found_link); ?>"><?php echo ($found_link); ?></a>, que contém o post que você estava tentando ver no site antigo. Se isto não acontecer, basta clicar no link ;)</p><br />
<p>A Home do Seu Blog agora é <a href="http://www.seudominio.com/blog/" mce_href="http://www.seudominio.com/blog/">www.seudominio.com/blog/</a>.</p>
</body>
</html>

Ele faz uma query na base de dados WordPress baseando-se no título do post do Blogger. Achando uma correspondência, ele pega o título e monta o link do post, usando a estrutura de permalink que estiver configurada (a padrão). Daí ele monta um meta refresh no HTML que vai para o navegador do leitor do blog.

Suba este arquivo na raíz do blog e o lado WordPress estará pronto.

- E agora, o que eu faço no Blogger?

Primeiro, como o conteúdo estará duplicado nos dois endereços (Blogger e WordPress), será necessário indicar aos mecanismos de busca para não mais indexar o Blogger. Para isso, coloque o seguinte dentro da tag <head> do seu template, abrindo-o no editor de templates em modo HTML e expandindo o modelo de widgets:

<meta content='NOINDEX, NOFOLLOW' name='ROBOTS'/>

Este código fará com os motores de busca não incluam o blog em seus índices, evitando-assim a perda de pontos.

Agora vamos a parte mais importante. Procure pela tag abaixo no código do template:

<b:section class='main' id='main' preferred='yes'>

Abaixo dela, coloque o seguinte código:

<!-- Código de redirecionamento -->
<b:widget id='Blog2' locked='true' title='Blog Posts' type='Blog'>
<b:includable id='main'>
<b:if cond='data:blog.pageType == "item"'>
<b:loop values='data:posts' var='post'>
<div id='redirectorTitle' style='visibility:hidden'><data:post.title/></div>
<script type='text/javascript'>
var new_domain = 'http://www.seudominio.com/blog/blogger-redirects.php?p='

function utf8_uri_encode( str ) {
  var high_code = new RegExp(/[u0080-uffff]+/);;
  new_str = str;;
  while( m = high_code.exec( new_str ) ) {
    new_str = new_str.replace(m,encodeURIComponent(m));;
  }
  return new_str;;
}

var title = document.getElementById('redirectorTitle').innerHTML;;
// [INCOMPLETE] Keep percent signs that aren't part of an octet?
title = title.replace(/&lt;[^&gt;]*?&gt;/g,'');; // remove tags
title = title.replace(/&amp;.+?;/g,'');; // remove entities
title = utf8_uri_encode(title);; // handle UTF-8 characters
title = title.toLowerCase();;
title = title.replace(/[^%a-z0-9 _-]/g,'');; // remove punctuation
title = title.replace(/s+/g,'-');; // turn spaces into hyphens
title = title.replace(/-+/g, '-');; // collapse runs of hyphens
title = title.replace(/^-+/g,'');; // remove prefixed hyphens
title = title.replace(/-+$/g,'');; // remove suffixed hyphens
var timestamp = '<data:post.timestamp/>';
timestamp = timestamp.split('/');
timestamp = timestamp[2]+'/'+timestamp[0]+'/'+timestamp[1];
var new_page = new_domain + title + '.html';;
document.location.href = new_page;
</script>
</b:loop>
</b:if>
</b:includable>
</b:widget>
<!--Fim do Código de redirecionamento -->

Este código é gerado para cada post e pega o título e transforma ele em uma estrutura de permalink, que será enviado à página na variável new_domain, que deve conter o caminho completo para a página blogger_redirects.php que criamos mais acima.

Note que existe a variável timestamp, que no código original era incluída na estrutura do permalink a ser montada na variável new_page, porém não precisei utilizá-la.

O “grosso” do redirecionamento está aí. Deixo como tarefas de casa a inclusão de um aviso no blog sobre a mudança de endereço, e fazer um código de redirecionamento caso o leitor caia na home do blog.

Adaptei os códigos dos seguintes sites (fontes originais):

- 301 Permanent Redirect from Blogger Beta to WordPress

- Redirecting Blogger posts to WordPress

- Successfully Forwarding Blogger to Wordpress

Um abraço!

Leonel Fraga de Oliveira Leonel Fraga de Oliveira é formado em Processamento de Dados na Faculdade de Tecnologia de São Paulo (FATEC-SP - 2002) e anteriormente em Técnico em Eletrônica, pela ETE Professor Aprígio Gonzaga (lá em 1999).
Atualmente trabalha como Analista de Sistemas na Prefeitura Municipal de São Caetano do Sul - SP
Tem como hobbies DJing (também trabalha como DJ freelancer) e ciclismo, além da manutenção dos sites NeoMatrix Light e NeoMatrix Tech.
Gosta de música eletrônica, tecnologia, cinema (super fã de Jornada nas Estrelas), gastronomia e outras coisas mais.


Compartilhe nas redes sociais

   

Deixe seu comentário

comments powered by Disqus