Sábado, Agosto 08, 2009

Não deixe o Google bravo quando seu sítio virtual for para manutenção


Vai tirar seu sítio virtual do ar? Vai colocá-lo em manutenção? Seja bem educado e avise claramente a dois importantes usuários :
  • Ao Google

  • Ao resto

Se o Google visitar seu sítio quando ele estiver fora do ar e não encontrar suas páginas, você será penalizado no ranking das buscas. Para que isto não aconteça, siga as orientações oficiais do Google: acesso a todas suas páginas deve retornar um código de status HTTP 503.

Isto é mais fácil falar do que fazer. Mas fique tranquilo. Vou te ensinar a configurar o Apache pra fazer isto. Ah! Isto é pra Linux, claro!

O objetivo é redirecionar todo mundo que tentar visitar seu sítio para uma página que avisa a seus usuários humanos que está fora do ar. O Google terá seu querido status 503. Nada de especial precisará estar instalado no servidor.

Vamos fazer, ou melhor, roubar e adaptar, um shell script para retornar o 503 e avisar aos usuários. Eis o arquivo 503.sh:
#!/bin/sh

echo Status: 503
echo Content-Type: text/html; charset=iso-8859-1
echo Retry-After: 3600
#echo Retry-After: Sat, 8 Ago 2009 23:59:59 GMT
echo ""

cat <<EOF
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>Estamos em manutenção</title>
</head>
<body>
<h1>Estamos em manutenção</h1>
<p>Foi mal! Estamos com problemas.
<p>Em breve voltaremos.</p>
</body>
</html>
EOF

Coloque-o na raiz de seu servidor e dê permissão de execução e acesso a todos: chmod a+rx /var/www/503.sh

O texto entre o cat << EOF e o EOF é o código HTML que aparecerá para o usuário. O macete aí está nos comandos echo que configuram o código de status da página e manda o cabeçalho Retry-After. Este cabeçalho avisa ao Google quando ele pode novamente tentar visitar suas páginas. Pode ter um valor em segundos (tente daqui a uma hora) ou uma data exata.

Agora é a vez de escalpelar o pele vermelha. Vá ao diretório de configuração do Apache e crie um arquivo chamado manutencao.conf. No arquivo de configuração de seu sítio escreva esta linha: #Include /etc/apache2/manutencao.conf. Na hora que o circo pegar fogo, bastará descomentá-la.

Precisaremos do mais legal módulo do Apache, o mod_rewrite. Certifique-se que ele está sendo carregado no seu apache vendo se "rewrite_module" aparece no output do comado /usr/sbin/apache2ctl -t -D DUMP_MODULES. Costuma ser instalado por default.

Eis a versão final do arquivo manutencao.conf:
RewriteEngine On

RewriteCond %{REMOTE_HOST} !^201\.37\.52\.58
RewriteRule . /503.sh [passthrough]

ScriptAlias /503.sh /var/www/503.sh

Sugiro que vá fazendo este arquivo aos poucos e testando a cada passo que der. Eis um passo a passo:
  1. Coloque a linha do ScriptAlias. Tente acessar: http://dominio.com.br/503.sh e veja se aparece a página de aviso de manutenção. Pra ter certeza mesmo, cheque na aba NET do Firebug se o código de retorno é mesmo 503.

  2. Agora ligue o RewriteEngine e coloque a RewriteRule. Toda página do seu sítio deve agora apresentar a mensagem de manutenção.

  3. A cereja no bolo é permitir o acesso normal ao IP da sua máquina com o RewriteCond. Se você tem um IP dinâmico, cheque seu valor de seu IP corrente.

Não esqueça de reinicializar o Apache a cada passo:
/usr/sbin/apache2ctl restart.

Prontinho. Sua configuração está feita.

O ideal é fazer isto tudo com calma. Quando todo o esquema estiver pronto, bastará descomentar uma linha do arquivo de configuração. Não deixe pra aprender isto quando o circo estiver pegando fogo. Com calma dá até pra bolar até &emdash; quem diria &emdash; uma página de manutenção divertida.

0 comentários: