Назад | Перейти на главную страницу

Как настроить переключатель для 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?

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

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

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 каталоги Includeed в основном файле конфигурации. Дополнительно у них есть a2Xen и a2Xdis команды, которые просто создают символическую ссылку или удаляют ее для облегчения обслуживания.