Кеширование — важная технология для ускорения загрузки страниц сайта, но в случае с страницей входа в WordPress (wp-login.php) оно может вызвать проблемы с авторизацией и безопасностью. В этой статье мы подробно разберём, почему нужно отключать кеширование для страницы входа, как это сделать с помощью кода и популярных плагинов, а также рассмотрим нюансы настройки серверного и плагинового кешей.
Почему важно отключать кеширование страницы входа в WordPress
Страница входа — это динамическая страница, которая обрабатывает форму авторизации и устанавливает сессии пользователя. Если кешировать эту страницу, браузер или CDN могут показывать устаревшую версию, из-за чего будут возникать ошибки при вводе логина и пароля, проблемы с редиректами и даже сессиями.
Кроме того, кеширование wp-login.php может создавать угрозы безопасности — злоумышленники могут получить доступ к кешированной форме или обойти некоторые защитные механизмы.
По этим причинам рекомендуется отключать кеширование на странице входа и связанных с ней URL, например, страницы регистрации и восстановления пароля.
Отключение кеширования страницы входа через functions.php
Самый простой способ — добавить в functions.php вашей темы или в отдельный плагин код, который устанавливает заголовки, запрещающие кеширование для wp-login.php и связанных страниц.
function wplogin_disable_login_page_cache() {
if (strpos($_SERVER['REQUEST_URI'], 'wp-login.php') !== false ||
strpos($_SERVER['REQUEST_URI'], 'wp-admin') !== false) {
nocache_headers();
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Pragma: no-cache');
header('Expires: Wed, 11 Jan 1984 05:00:00 GMT');
}
}
add_action('send_headers', 'wplogin_disable_login_page_cache');
Данный код проверяет, запрашивается ли wp-login.php или wp-admin, и отправляет необходимые HTTP-заголовки для отключения кеширования.
Особенности и советы
- Функция
nocache_headers()уже устанавливает часть нужных заголовков, но лучше дополнить их вручную для максимальной совместимости. - Если вы используете CDN или серверное кеширование (например, Varnish, Nginx FastCGI Cache), нужно дополнительно настроить исключения на уровне сервера.
- Проверяйте, чтобы другие плагины кеширования (WP Rocket, W3 Total Cache, LiteSpeed Cache) не кешировали страницу входа, для этого настройте исключения в их настройках.
Настройка популярных плагинов кеширования для исключения wp-login.php
Большинство популярных плагинов кеширования поддерживают отключение кеширования для страниц входа. Вот примеры для самых распространённых:
WP Rocket
WP Rocket по умолчанию исключает из кеша страницы wp-login.php и wp-admin. Чтобы проверить или добавить исключения:
- Перейдите в Настройки WP Rocket > Кеширование
- В разделе «Исключения» добавьте
wp-login.php*
W3 Total Cache
В W3 Total Cache зайдите в Performance > Page Cache и в поле «Never cache the following pages» добавьте:
/wp-login.php
/wp-admin/
LiteSpeed Cache
В настройках LiteSpeed Cache, в разделе Cache > Excludes добавьте в список исключений wp-login.php и wp-admin/*.
Отключение кеширования на уровне сервера (Nginx, Apache)
Если у вас есть доступ к настройкам сервера, лучше отключать кеширование страницы входа там, чтобы избежать конфликтов.
Пример настройки Nginx
location ~* /wp-login.php {
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
expires off;
proxy_no_cache 1;
proxy_cache_bypass 1;
}
Пример настройки Apache (.htaccess)
<FilesMatch "wp-login.php">
Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</FilesMatch>
Тестирование отключения кеширования страницы входа
После настройки важно проверить, что кеширование действительно отключено. Для этого можно использовать инструменты разработчика в браузере:
- Откройте вкладку Network (Сеть) и обновите страницу входа.
- Выберите запрос к
wp-login.phpи проверьте заголовки ответа — там должны бытьCache-Control: no-store, no-cache,Pragma: no-cacheиExpiresс датой в прошлом. - Также проверьте, что после повторного запроса страница обновляется, а не берётся из кеша.
Дополнительные рекомендации по безопасности страницы входа
Отключение кеширования — только одна часть настройки безопасной и корректной работы страницы входа. Дополнительно рекомендуем:
- Использовать Clearfy Pro для оптимизации безопасности и отключения лишних функций WordPress.
- Добавить защиту от брутфорс-атак с помощью плагинов Limit Login Attempts или встроенных функций Clearfy.
- Включить двухфакторную аутентификацию (2FA) через специальные плагины.
- Регулярно обновлять WordPress, темы и плагины для устранения уязвимостей.