Vamos descobrir como indicar que o site está em manutenção e direcionar as visitas à uma pagina específica de forma simples.
Para quem trabalha com desenvolvimento de sites, sempre chega aquele momento que o site precisa sofrer atualizações e muitas delas precisam que o site esteja offline, ou pelo menos que não acessem o banco de dados, ou API’s. Encontrei uma forma bem elegante e simples de fazer isso.
Para começar, basta ter certeza que seu mod_rewrite está habilitado no Apache, e criar um arquivo “.htaccess” na raiz do seu site, também chamado de DOCUMENT_ROOT.
E o que esse arquivo faz?
Caso exista um arquivo com um nome específico, ele direciona todo o tráfego do seu site para uma página específica. Desta forma, você pode ter uma pagina estática, informando seus visitantes do período de manutenção enquanto atualiza os arquivos da aplicação e/ou banco de dados. E para desativar o modo manutenção, basta apagar (ou renomear) o arquivo de manutenção, e todo o tráfego volta ao que era antes! Legal né?
Abaixo temos o conteúdo do arquivo .htaccess :
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{DOCUMENT_ROOT}/manutencao-on -f RewriteCond %{REQUEST_URI} !/manutencao.php$ RewriteRule $ /manutencao.php [L] </IfModule>
Vamos entender passo a passo o que ele faz:
Linha 1: Verificamos se o mod_rewrite está disponível no Apache.
Linha 2: Habilitamos o modulo de reescrita de URL.
Linha 3: Utilizando a Condição “-f”, verificamos a existência do arquivo manutencao-on no DOCUMENT_ROOT do site.
Linha 4: Verifica se o endereço de URI não termina com “manutencao.php”.
Linha 5: A regra então redireciona todas as paginas acessadas para manutencao.php.
Juntando tudo
Existindo o modulo mod_rewrite e habilitando-o, e caso exista um arquivo de manutenção na raiz do site, todo trafego é direcionado à pagina manutencao.php.
Exemplo:
A raiz do site, geralmente aponta para um arquivo index. O mod_rewrite então irá redirecionar para o arquivo manutencao, So que ao redirecionar, ele vem como um novo request e este tambem será redirecionado para o manutencao, gerando um novo request, que tambem será redirecionado… indefinidamente! A linha 4 justamente evita esse loop.
Para evitar que robôs do google, bing, ou qualquer outro crawler indexem o seu site enquanto estiver em manutenção, não se esqueça de adicionar os seguintes headers no seu arquivo manutencao.php:
<?php # headers header("HTTP/1.1 503 Service Temporarily Unavailable"); header("Status: 503 Service Temporarily Unavailable"); header("Retry-After: 3600"); ?> <html> <head>Meu Site</head> <body style="background-color:#fffbef; color: #e95d2a"> <h2>Estamos temporariamente fora de serviço!</h2> <h3>Por favor retorne mais tarde!</h3> </body> </html>
Com os headers acima, você informa aos crawlers que o site está temporariamente indisponível, e que devem tentar novamente em 1 hora (3600 segundos), ou qualquer período que você preferir.
Conclusão
Uma vez adicionado o arquivo htaccess, tudo o que você precisa fazer, é criar um arquivo manutencao-on no DOCUMENT_ROOT do seu site, que os redirecionamentos começarão. Para finalizar, renomeie o arquivo para manutencao-off, (ou qualquer outra coisa) e o trafego estará de volta.
Espero que seja útil para vocês!
Abraço!