Мне нужно вернуть код состояния 503 с одного из моих сайтов, пока он не обслуживается, проверенным временем способом SE_firendly. Кажется, я не могу понять, как это сделать, не вызывая внешние скрипты, которых я бы предпочел избегать.
Существует ли директива apache, которая позволит мне возвращать произвольный код состояния HTTP, не прибегая к таким хакам, как вызов php-скрипта, который устанавливает заголовок состояния?
apache-2.2
http
seo
Дэн Маккинлей
источник
источник
Ответы:
Это обслуживает каждый запрос статической удерживающей страницы вместе со статусом 503.
RedirectMatch используется для отмены самой страницы удержания, которая в противном случае создала бы бесконечный цикл.
mod_header используется для установки заголовка Retry-After, чтобы вы могли сообщить Google / другим ботам и т. д., что в этом примере вы должны выполнить резервное копирование через 18000 секунд (5 часов). Вы можете
sudo ap2enmod header
активировать mod_header (который требуется для директивы Header).источник
RedirectMatch 503 ^/(?!\.Error/.*|dragonlord-bg\.jpg)
.Пытаться
С http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirect :
Дополнительное примечание: при этом отобразится стандартное / настроенное ErrorDocument для ошибки 503.
источник
Redirect 503 /
похоже на работу.Чтобы сделать режим обслуживания более гибким, установите 503, когда существует специальный файл, ala:
ПРИМЕЧАНИЕ. Расположение DOCUMENT_ROOT может отличаться в зависимости от httpd 2.2 и 2.4.
Таким образом, все, что вам нужно сделать, это «нажать /path/to/docroot/.maintenance», и ваш сайт немедленно начнет возвращать 503. Затем, чтобы все закончилось, создайте пользовательскую страницу с ошибкой в формате HTML и добавьте ее в правильный файл конфигурации сервера Apache:
А для бонусных баллов, если у вас есть несколько веб-серверов, либо укажите местоположение .maintenance в общей файловой системе, либо для еще большего количества бонусных баллов:
pdsh -w $web1_ip,$web2_ip,$web3_ip "sudo touch /path/to/docroot/.maintenance"
Преимущество создания файла режима обслуживания состоит в том, что он работает, когда ваше приложение не работает, он быстр и прост, а кеширующий прокси-сервер внешнего интерфейса легче обрабатывать, поскольку вы можете обрабатывать все серверные 503 одним махом.
Источники:
источник