Назад | Перейти на главную страницу

Безопасны / надежны ли перенаправления .htaccess (обслуживание веб-сайта)?

Наш веб-сайт будет недоступен примерно на час для обслуживания. Все пользователи должны быть перенаправлены на страницу, указывающую на то, что веб-сайт получает обновление и / или находится на обслуживании.

Будет использовать следующие .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: