Как настроить переключатель для Apache RewriteRule?

У меня есть следующая конфигурация Apache, которая отображает ошибку 503 Service Unavailable для всех посетителей, кроме моего IP-адреса:

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

Это сделано для того, чтобы я мог проводить техническое обслуживание на своем сайте без ошибок для пользователей. (Я использую свой фактический IP, а не 127.0.0.1.)

Однако, чтобы отключить или включить это, мне нужно закомментировать / раскомментировать все строки или полностью удалить его. На моем другом сервере под управлением nginx я использовал предложение geo с переменной (как видно из этого вопроса). Так что я могу просто изменить default от 0 в 1 включить это.

Есть ли способ сделать что-то подобное в Apache?

3 ответа

Решение

Если вы не хотите перезапускать Apache для изменения настроек (что необходимо для изменения конфигурации), и вы не используете .htaccess файлы (которые вы на самом деле не хотите)

Вы можете настроить то, что мы делаем (обычно через наш loadbalancer), тест для статуса обслуживания, например, добавив тест

RewriteCond ^/maintenance.txt -f 

где окно обслуживания начинается с создания файла maintenance.txt (например, с touch maintenance.txt) на другом живом сайте.

HBruijn ответ является лучшим, но я обнаружил еще один вариант, который работает:

RewriteCond 1 0

Тогда 0 можно изменить на 1 чтобы включить его.

Посмотрите, как Debian/Ubuntu настраивает Apache. Они используют выдержки конфигурации для сайтов, модулей и общей конфигурации, хранящейся в файлах в /etc/apache2/{mod|sites|conf}-available который становится символом в /etc/apache2/{mod|sites|conf}-enabled активировать его. Эти *-enabled каталоги Includeредактировать в основном конфигурационном файле. Дополнительно они имеют a2Xen а также a2Xdis Команды, которые просто создают символическую ссылку или удаляют ее для простоты обслуживания.

Другие вопросы по тегам