Recentemente deparei-me novamente com a necessidade de colocar um portal em modo de manutenção para proceder a algumas actualizações e ia fazer como habitual de acrescentas três linhas ao inicio do ficheiro index.php, algo do género:
include('modomanutencao.php'); die();
Mas desta vez isto não me satisfez e senti a necessidade de fazer isto de uma forma mais “profissional” não a desenrascar, porque assim o site continuaria online caso entrassem por outro URL.
E o primeiro pensamento que me veio à cabeça foi utilizar o htaccess. Assim comecei a escrever algumas regras para o htaccess redireccionar todos os utilizadores para o modomanutencao.php menos eu, pois tinha de fazer testes a tudo.
RewriteCond %{HTTP:portalmanutencao} !^1$ RewriteRule ^(.*)$ modomanutencao.php
E o que fazem estas duas linhas? A primeira é uma condição que diz que todos os browsers que não enviem o Header portalmanutencao com o valor 1 têm de seguir a regra da segunda linha que diz que todas as páginas que tentarem aceder serão redireccionadas para a página modomanutencao.php
Para mudar e acrescentar HTTP Headers podem utilizar o seguinte plugin caso utilizem o browser Mozilla Firefox: Modify Headers
Depois da manutenção feita quando estava a fazer o meu jogging ao fim do dia isto ficou-me na cabeça e pus-me a pensar noutras maneiras de se fazer isto e surgiu-me mais uma ideia também utilizando o htaccess, que basicamente funciona de maneira parecida à interior, só que neste caso redirecciona também o utilizador para a página de modo de manutenção exceptuando quem tiver o IP definido.
ErrorDocument 503 http://joaopedropereira.com/modomanutencao.php Order deny,allow Deny from all Allow from 127.0.0.1 #colocar o IP de quem estiver a fazer a manutenção
Aprender mais sobre o mod_rewrite do apache
Existem mais formas de o fazer, utilizando htaccess, PHP, etc.
Como é que vocês fazem quando definem o modo de manutenção nas páginas que administram?
Neste último excerto de código, não sei se será bom colocar o erro 403 Forbidden.
Digo isto um bocado “às cegas”, mas dá-me ideia que por exemplo a nível de motores de busca, eles não seguem mais essa página, aparentemente por não ser de acesso permitido (forbidden). Visto que o documento não leva à informação, seria talvez mais correcto 503 Service Unavailable.
De qualquer maneira estas dicas é só para ser “correcto” perante outros clientes na web, como bots de busca, etc, porque a nível de browsers funciona bem 😉
Tens razão devia ter colocado o ErrorDocument 503! Vou corrigir!
Obrigado pelo comentário e pela dica softclean! Volta sempre.