Como configuro um toggle para um Apache RewriteRule?

2

Eu tenho a seguinte configuração do Apache, que exibe um erro 503 Serviço Indisponível para todos os visitantes, exceto para o meu endereço IP:

ErrorDocument 503 /503.html
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^127.0.0.1$
RewriteCond %{REQUEST_URI} !^/503.html$
RewriteRule .* - [R=503]

Isso é para que eu possa realizar a manutenção no meu site sem exibir erros para os usuários. (Estou usando meu IP real, não 127.0.0.1 .)

No entanto, para desligar ou ligar, preciso comentar / descomentar todas as linhas ou removê-las completamente. No meu outro servidor executando nginx eu usei uma cláusula geográfica com uma variável (como visto nesta questão . Assim, posso alterar apenas default de 0 para 1 para ativá-lo.

Existe uma maneira de fazer algo semelhante no Apache?

    
por DisgruntledGoat 28.03.2016 / 22:47

3 respostas

3

Se você não quiser reiniciar o Apache para alterar as configurações (que é um requisito para alterações na configuração) e não estiver usando .htaccess arquivos (o que você não deseja, really )

Você pode configurar o que fazemos (por meio de nosso balanceador de carga normalmente), um teste para um status de manutenção, por exemplo, adicionando um teste

RewriteCond ^/maintenance.txt -f 

em que uma janela de manutenção começa criando um arquivo maintenance.txt (por exemplo, com touch maintenance.txt ) no site ativo.

    
por 28.03.2016 / 23:37
0

Veja como o Debian / Ubuntu configura o Apache. Eles usam trechos de configuração para sites, módulos e configurações gerais armazenados em arquivos em /etc/apache2/{mod|sites|conf}-available , que são vinculados a /etc/apache2/{mod|sites|conf}-enabled para ativá-lo. Esses *-enabled diretórios são Include ed no arquivo de configuração principal. Além disso, eles têm os comandos a2Xen e a2Xdis que apenas criam o link simbólico ou o excluem para facilitar a manutenção.

    
por 28.03.2016 / 23:24
0

A resposta de HBruijn é a melhor, mas aqui está outra opção que acabei de descobrir que funciona:

RewriteCond 1 0

Em seguida, o 0 pode ser alterado para 1 para ativá-lo.

    
por 29.03.2016 / 17:24