Muszę zwrócić kod stanu 503 z jednej z moich stron, gdy jest on gotowy do konserwacji, zgodnie z uświęconym stylem SE_firendly. Nie potrafię wymyślić, jak to zrobić bez wywoływania zewnętrznych skryptów, których wolałbym uniknąć.
Czy istnieje dyrektywa apache, która pozwoli mi zwrócić dowolny kod statusu HTTP bez uciekania się do hacków takich jak wywoływanie skryptu php, który ustawia nagłówek statusu?
apache-2.2
http
seo
i mackinlay
źródło
źródło
Odpowiedzi:
Służy to każdemu żądaniu statyczną stronę przechowywania wraz ze statusem 503.
RedirectMatch służy do zanegowania samej strony wstrzymującej, która w przeciwnym razie stworzyłaby nieskończoną pętlę.
mod_header służy do ustawienia nagłówka Retry-After, dzięki czemu możesz powiedzieć Google / innym botom itp., że należy wykonać kopię zapasową po 18000 sekundach (5 godzinach) w tym przykładzie. Możesz
sudo ap2enmod header
aktywować mod_header (który jest wymagany przez dyrektywę Header).źródło
RedirectMatch 503 ^/(?!\.Error/.*|dragonlord-bg\.jpg)
.Próbować
From http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirect :
Dodatkowa uwaga: Wyświetli domyślny / skonfigurowany dokument błędu dla błędu 503.
źródło
Redirect 503 /
wydaje się działać.Aby uelastycznić tryb konserwacji, ustaw 503, gdy istnieje specjalny plik, między innymi:
UWAGA: Lokalizacja DOCUMENT_ROOT może różnić się między httpd 2.2 a 2.4
W ten sposób wszystko, co musisz zrobić, to „touch /path/to/docroot/.maintenance”, a Twoja strona natychmiast zacznie zwracać 503. Następnie, aby wszystko było nieprzyzwoite, utwórz niestandardową, ładnie sformatowaną stronę błędów HTML i dodaj ją do poprawnego pliku konfiguracyjnego serwera Apache:
A w przypadku punktów bonusowych, jeśli masz wiele serwerów WWW, albo określ lokalizację .maintenance na współdzielonym systemie plików, albo jeszcze więcej punktów bonusowych:
pdsh -w $web1_ip,$web2_ip,$web3_ip "sudo touch /path/to/docroot/.maintenance"
Zaletą bazowania na pliku trybu konserwacji jest to, że działa, gdy aplikacja nie działa, jest szybka i prosta, a serwer proxy buforowania interfejsu użytkownika jest łatwiejszy do obsługi, ponieważ można obsłużyć wszystkie zaplecze 503 za jednym zamachem.
Źródła:
źródło