Desenvolvimento e bases de dados

Página de manutenção temporária através do .htaccess

Revisto a 3 min de leitura .htaccess redirecionamentos

Pode colocar um site em manutenção temporária através do .htaccess e manter cada URL com uma resposta 503 Service Unavailable. Isto permite indicar que a indisponibilidade é temporária sem redirecionar todas as páginas para um endereço diferente.

Preparar a página

Crie um ficheiro estático mantenimiento.html na raiz pública do domínio. Assim, não depende do PHP nem da base de dados que estiver a reparar. Se utilizar imagens ou CSS próprios, coloque-os em mantenimiento-assets ou utilize estilos dentro do HTML.

Guarde o .htaccess original e acrescente este bloco antes das regras gerais do CMS:

ErrorDocument 503 /mantenimiento.html

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteCond %{REMOTE_ADDR} !^192\.0\.2\.10$
RewriteCond %{REQUEST_URI} !^/mantenimiento\.html$ [NC]
RewriteCond %{REQUEST_URI} !^/mantenimiento-assets/ [NC]
RewriteCond %{REQUEST_URI} !^/robots\.txt$ [NC]
RewriteRule ^ - [R=503,L]

Substitua example.com pelo seu domínio, mantendo os pontos escapados, e 192.0.2.10 pelo IP público autorizado a continuar a trabalhar. São valores de exemplo. Se precisar de abranger outros nomes, adapte o alcance de forma explícita.

A página de manutenção, os seus recursos e o robots.txt ficam acessíveis. O resto devolve 503, exceto para o IP autorizado. Se o site for servido a partir de uma subpasta, adapte também os caminhos das exceções e do documento de erro.

Verificar e terminar

Teste a partir de uma ligação diferente da autorizada: a página inicial e um URL interior devem devolver 503 e mostrar a página. Verifique também que os seus recursos carregam e que, a partir da sua ligação, pode continuar a trabalhar.

Se houver cache de servidor ou CDN, verifique a resposta que um visitante vê; uma cópia armazenada pode esconder a manutenção ou permanecer depois dela. Não publique a página de manutenção como uma resposta 200 para todos os URLs.

Ao terminar, retire este bloco, reponha as regras habituais e verifique as páginas afetadas, os formulários e o estado HTTP. Mantenha a manutenção apenas durante o tempo necessário.

Se utilizar um proxy

REMOTE_ADDR pode conter o IP do proxy em vez do seu. Confirme como o servidor reconhece os IPs de proxies de confiança antes de utilizar esta exceção; não substitua a condição por um cabeçalho que o visitante possa falsificar.

Se não conseguir identificar de forma fiável a sua ligação, utilize o modo de manutenção com acesso autenticado da aplicação ou combine outra via com o suporte. Não desative o proxy apenas para fazer coincidir um IP.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.