Как я могу переписать все, кроме моего IP-адреса на стандартный. Apache 503 временно не работает? - PullRequest
4 голосов
/ 24 февраля 2009

Я собираюсь провести техническое обслуживание сервера и хотел бы переписать запросы к стандартному временно недоступному сообщению Apache 503.

Я гуглил и нашел несколько фрагментов mod_rewrite, но все они включают в себя выполнение [R = 503] для PHP-скрипта, который затем отправляет свои собственные 503 заголовки и рукописное сообщение ... что просто кажется уродливым мне, когда Apache по умолчанию там для меня, чтобы использовать.

Итак, как мне переписать все запросы в стандартное сообщение об ошибке Apache 503?

Спасибо за вашу помощь

(Долгое время подписчик RSS-кодов ужасов здесь ... Просто в спешке!)

Ответы [ 3 ]

4 голосов
/ 24 февраля 2009

Чтобы добавить немного больше, у меня часто бывает следующее:

RewriteEngine on
RewriteCond -f path/to/my-custom-error-document
RewriteRule !^path/to/my-custom-error-document$ - [L,R=503]

Для этого нужно проверить, существует ли документ об ошибке. Если это так, он отображает страницу с ошибкой. Что это позволяет мне сделать, это выдать пользовательскую ошибку без необходимости перезапуска apache. Чтобы вернуть его на место, я просто удаляю (или переименовываю) страницу с ошибкой.

4 голосов
/ 24 февраля 2009

Я не знаю точно, так как, когда mod_rewrite разрешает коды состояния, отличные от 3xx, для флага R. Но это должно сделать это:

RewriteEngine on
RewriteRule ^ - [L,R=503]

И если вы установили пользовательский документ об ошибках, используйте его для предотвращения дополнительных внутренних ошибок:

RewriteEngine on
RewriteRule !^path/to/my-custom-error-document$ - [L,R=503]

Редактировать Нашли лучшее решение, используя переменную среды REDIRECT_STATUS:

RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} !=503
RewriteRule ^ - [L,R=503]
1 голос
/ 24 февраля 2009

Спасибо, ребята - сработало отлично.

Вот точная конфигурация .htaccess, которую я использовал (без моего IP-адреса) во время обслуживания:

RewriteEngine on
RewriteCond %{REMOTE_HOST} !^123\.456\.789\.012$
RewriteCond %{ENV:REDIRECT_STATUS} !=503
RewriteRule ^ - [L,R=503]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...