Наш веб-сайт будет недоступен примерно на час для обслуживания. Все пользователи должны быть перенаправлены на страницу, указывающую на то, что веб-сайт получает обновление и / или находится на обслуживании.
Будет использовать следующие .htaccess
правила надежно предотвращают доступ всех пользователей с веб-сайта и надежно перенаправляют весь трафик, который не соответствует моему IP, на страницу обслуживания? то есть никто не может обойти эти правила перенаправления / перезаписи?
RewriteCond %{REQUEST_URI} !/maintenance.php$
RewriteCond %{REMOTE_ADDR} !^192\.192\.192\.192$
RewriteRule $ /maintenance.php [R=302,L]
Я полагаю, это зависит от того, какую часть вашего сайта / сервера вы снимаете и есть ли у вас другие / конфликтующие .htaccess
файлы в другом месте вашей файловой системы? Но иначе, если .htaccess
и mod_rewrite все еще доступен, тогда ваше временное перенаправление должно работать нормально. Нет возможности для пользователь чтобы обойти эти правила, если они каким-то образом не взломают ваш сервер.
Имейте в виду, что директивы mod_rewrite в родительских каталогах могут быть полностью переопределены дочерними директивами далее по пути файловой системы. Например, если у вас есть каталог /foo
со своим .htaccess
файл, который использует mod_rewrite (т.е. /foo/.htaccess
) тогда если кто-то запросит /foo/bar
ваши родительские директивы mod_rewrite будут переопределены, и перенаправление не произойдет. По этой причине эти директивы были бы лучше в конфигурации сервера - в vhost или сервер context - поэтому их нельзя переопределить. Или используйте mod_authz_core / host и настройте ответ.
Однако, если это существующий сайт, который уже проиндексирован поисковыми системами, вам следует рассмотреть возможность отправки ответа 503 Service Unavailable вместе с Retry-After
Заголовок ответа HTTP (с указанием часа обслуживания) - вместо редиректа. Это предпочтительный ответ для сохранения SEO.
Видеть мой ответ на следующий вопрос в стеке веб-мастеров, чтобы получить дополнительную информацию об ответе 503: