# .htaccess: redirecionamento automático para sites em manutenção

> Redirecionamento automático com .htaccess para sites em manutenção. Configure HTTP 503 e páginas temporárias corretamente para preservar SEO. Implemente!

URL: https://dpw.dev/miscelanea/htaccess-redirecionamento-automatico-sites-em-manutencao/  
Publicado em: 2013-12-09  
Categoria: miscelanea  
Tags: analise  
Autor: Tárcio Zemel

Por mais que haja planejamento no **desenvolvimento web** no momento de passar uma versão de um site que esteja em homolagação para produção, não raramente é preciso colocar o **site em manutenção**. Na verdade, a manutenção ocorre não somente nessas situações, mas em diversas outras (por exemplo, a integridade dos arquivos que compõem um sistema web foi comprometida e é preciso colocar o sistema em manutenção para identificar o erro e/ou restaurar backups).

Dentre as diversas técnicas/recomendações para estas e outras situações, certamenta uma das mais indicadas é realizar um **redirecionamento automático para sites em manutenção**.

> Artigo baseado em [htaccess Redirect to Maintenance Page](http://perishablepress.com/htaccess-redirect-maintenance-page-site-updates/).

Saber redirecionar os visitantes para uma página de manutenção ou outra página temporária é um instrumento essencial para ter em seu cinto de ferramentas web. Usando **.htaccess**, redirecionar os visitantes para uma página de manutenção temporária é simples e eficaz. Tudo o que é preciso para redirecionar os visitantes é o seguinte código, colocado no arquivo `.htaccess` na raiz do site:

```
# MAINTENANCE-PAGE REDIRECT

  RewriteEngine on
  RewriteCond %{REMOTE_ADDR} !^123.456.789.000
  RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
  RewriteCond %{REQUEST_URI} !.(jpe?g?|png|gif) [NC]
  RewriteRule .* /maintenance.html [R=302,L]

```

Esta aí o código para o copiar-e-colar; mas, claro, existem alguns detalhes para aqueles que podem não estar familiarizados com o processo.

## Explicação do código de redirecionamento

Explicando cada linha do código de redirecionamento mostrado acima, tem-se o seguinte:

1. Meramente um comentário para explicar a finalidade do código;
2. Checa pelo módulo `mod_rewrite` do Apache (termina na linha 8);
3. Habilita o motor de reescrita `mod_rewrite` do Apache (dependendo da configuração do seu servidor, essa linha pode ser desnecessária);
4. Verifica se o pedido está vindo de seu computador. Se sim, então o redirecionamento não acontece (se você for redirecionado, quem vai fazer a manutenção?); para que isso funcione, é preciso alterar os números nesta linha para bater com o seu próprio endereço IP;
5. Impede que um loop infinito aconteça, testando o pedido contra o nome da página de manutenção;
6. Impede que o redirecionamento aconteça com alguns tipos de imagem (afinal, sua página de manutenção pode conter algumas);
7. Redireciona todas as requisições que atendam ambas condições de reescrita anteriores para a página de manutenção especificada; uma das melhores estratégias é responder com o código **302** ("Movido Temporariamente").

## Redirecionamento de tráfego com htaccess

Para redirecionar os visitantes para uma página de manutenção, coloque o código anterior em um arquivo `.htaccess` localizado na raiz do site (se o arquivo já existe, edite-o). Isso garantirá que todas as páginas e recursos contidos dentro do domínio sejam redirecionados. Se é preciso redirecionar pedidos apenas de um subdiretório específico dentro do domínio, o arquivo `.htaccess` contendo essas regras deve ser colocado neste diretório em questão (ao invés de na raiz).

Agora que o htaccess está no lugar, é preciso criar e fazer upload da página de manutenção, por exemplo, com o nome `maintenance.html`. Este é um arquivo HTML comum, então você pode usar praticamente todos os recursos que a linguagem oferece - de fato, o arquivo não precisa ser, necessariamente, escrito em HTML; é possível usar, por exemplo, PHP para fazer tudo dinâmico, mas lembre-se de alterar as duas instâncias do nome do arquivo no código do `.htaccess` para corresponder ao nome real do arquivo.

## Múltiplos endereços IP

Para o caso de a manutenção ser feita por uma equipe ou alguma situação semelhante, também é possível indicar múltiplos endereço de IP para prevenir o redirecionamento. Basicamente, existem 2 maneiras.

A primeira consiste em adicionar mais instruções `RewriteCond` ao código anterior:

```
# MAINTENANCE-PAGE REDIRECT

  RewriteEngine on
  RewriteCond %{REMOTE_ADDR} !^123.456.789.000
  RewriteCond %{REMOTE_ADDR} !^123.456.789.000
  RewriteCond %{REMOTE_ADDR} !^123.456.789.000
  RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
  RewriteCond %{REQUEST_URI} !.(jpe?g?|png|gif) [NC]
  RewriteRule .* /maintenance.html [R=302,L]

```

Com este método, edite cada endereço IP para coincidir com o(s) seu(s) próprio(s) e/ou ou de sua equipe e e adicione/remova tantos IPs conforme necessário.

O segundo método é igualmente eficaz:

```

  Order Deny,Allow
  Deny from all
  Allow from 123.456.789.000
  Allow from 123.456.789.000

ErrorDocument 403 /maintenance.html

  Order Allow,Deny
  Allow from all

```

Este método é um pouco mais simples, mas não tão eficiente para SEO, já que os bots de indexação podem visitar o site enquanto a manutenção está acontecendo. O primeiro método envia uma resposta 302, enquanto o segundo envia uma menos precisa **403** ("Erro de Proibição", que indica que o cliente não pode acessar os recursos por aquela requisição).

Use o método que você mais se identificou, levando sempre as necessidades/requisitos do projeto em consideração.

## Considerações finais

Evidentemente, essas não são as únicas medidas que podem ser tomadas para redirecionamento automático para sites em manutenção. Por exemplo, é possível habilitar o pedido de senha via htaccess; permitir o acesso a alguma(s) categoria(s) de visitantes; solicitar redirecionamentos específicos; e muito mais.

Entretanto, para manter no básico a proposta do artigo de mostrar como fazer redirecionamento automático para quando um site ou sistema web está em manutenção, os códigos mostrados bastam.

Mas, até para o básico, há sempre novas técnicas e possibilidades possíveis. Então, caso tenha alguma outra dica ou maneira diferente de fazer **redirecionamento automático para sites em manutenção**, compartilhe fazendo um comentário!

---

Fonte: [dpw - desenvolvimento para web](https://dpw.dev/) (pt-BR).
Guia para agentes: https://dpw.dev/llms.txt
Índice completo: https://dpw.dev/sitemap-index.xml
Feed: https://dpw.dev/rss.xml
