Как настроить переключатель для 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
Команды, которые просто создают символическую ссылку или удаляют ее для простоты обслуживания.