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