По умолчанию страницы входа и регистрации в WordPress доступны по URL-адресам /wp-login.php и /wp-login.php?action=register. Это создает потенциальный риск для безопасности сайта, так как злоумышленники могут использовать стандартные адреса для атак перебором паролей или спама. В этой статье мы рассмотрим, как изменить URL страницы регистрации WordPress без использования плагинов, чтобы повысить безопасность и сделать сайт менее уязвимым.
Почему важно изменить URL регистрации WordPress
Стандартный адрес регистрации и входа известен всем, в том числе и злоумышленникам. Это облегчает автоматические атаки, которые могут привести к взлому сайта или его недоступности. Кроме того, изменение URL помогает скрыть страницу регистрации от ботов и спамеров.
Использование плагинов для изменения URL — распространенный способ, но не всегда желателен: плагины могут нагрузить сайт, вызвать конфликты или перестать поддерживаться. Поэтому рассмотрим решение с помощью собственного кода.
Изменение URL регистрации с помощью переадресации и фильтров
Основная идея — перехватить запросы к стандартному URL регистрации и перенаправить их на новый адрес. При этом нужно обработать форму регистрации, чтобы она корректно работала по новому пути.
Шаг 1. Создаем новый endpoint для регистрации
Для начала добавим новый endpoint в структуру URL, например, /custom-register/. Это можно сделать с помощью функции add_rewrite_rule. Добавим следующий код в файл functions.php вашей темы или в отдельный файл плагина:
function wpcourse_add_custom_register_rewrite() {
add_rewrite_rule('^custom-register/?$', 'wp-login.php?action=register', 'top');
}
add_action('init', 'wpcourse_add_custom_register_rewrite');
Эта строка говорит WordPress, что при обращении к /custom-register/ будет загружаться страница регистрации.
Шаг 2. Обновляем ссылку на регистрацию
Чтобы посетители или формы на сайте вели на правильный URL, заменим стандартные ссылки регистрации. Для этого используем фильтр register_url:
function wpcourse_custom_register_url() {
return site_url('custom-register');
}
add_filter('register_url', 'wpcourse_custom_register_url');
Теперь функция wp_registration_url() и другие вызовы register_url будут возвращать новый адрес.
Шаг 3. Перенаправляем стандартные запросы
Чтобы предотвратить доступ к старому URL регистрации, добавим редирект:
function wpcourse_redirect_old_register_url() {
if (strpos($_SERVER['REQUEST_URI'], 'wp-login.php') !== false && isset($_GET['action']) && $_GET['action'] === 'register') {
wp_redirect(site_url('custom-register'));
exit;
}
}
add_action('init', 'wpcourse_redirect_old_register_url');
Это гарантирует, что любые попытки попасть на стандартную страницу регистрации будут перенаправлены на новую.
Дополнительные советы по безопасности
Изменение URL — лишь часть общей стратегии безопасности. Рекомендуется дополнительно:
- Использовать плагин для ограничения количества попыток входа (например, Limit Login Attempts Reloaded).
- Включить двухфакторную аутентификацию.
- Регулярно обновлять WordPress и плагины.
- Использовать сложные пароли и SSL-сертификат.
Проверка и очистка правил перезаписи
После добавления нового правила перезаписи нужно обновить правила, чтобы они вступили в силу. Для этого зайдите в админке WordPress в Настройки > Постоянные ссылки и просто нажмите кнопку «Сохранить изменения» без изменения настроек.
Если вы хотите сделать это программно, можно использовать функцию:
function wpcourse_flush_rewrite_rules() {
wpcourse_add_custom_register_rewrite();
flush_rewrite_rules();
}
register_activation_hook(__FILE__, 'wpcourse_flush_rewrite_rules');
Но чаще всего достаточно сохранить настройки постоянных ссылок вручную.
Вывод
Изменение URL страницы регистрации WordPress без плагинов — это простой и эффективный способ повысить безопасность сайта. Мы создали новый endpoint /custom-register/, перенаправили на него стандартные запросы и заменили ссылки на регистрацию. Такой подход не требует сторонних расширений и дает полный контроль над процессом.
Если вам нужно изменить также URL страницы входа, можно применить аналогичный метод с другим rewrite правилом и фильтром.