Настройка доступа к админке WordPress на домене .com
Настройка доступа к панели администратора WordPress на домене .com может быть выполнена разными способами: от простого изменения URL входа до полного переноса админки на отдельный поддомен. Ниже рассмотрены несколько подходов с примерами кода и указанием типичных трудностей.
Основное решение: вход через поддомен admin.example.com
Как сделать так, чтобы панель управления WordPress открывалась по адресу admin.example.com, а основной сайт оставался на example.com?
Цель: разделить административную и публичную части, повысить безопасность, упростить управление cookie.
- Создайте поддомен admin.example.com в панели хостинга, укажите ту же корневую папку, где установлен WordPress.
- В файл wp-config.php добавьте константы (перед строкой require_once(ABSPATH . 'wp-settings.php')):
define('WP_HOME', 'https://example.com'); define('WP_SITEURL', 'https://admin.example.com');Com wp wp admin php (админ-панель wordpress на домене .com)
- В файл .htaccess в корне сайта добавьте правила для перенаправления запросов к wp-admin на поддомен:
RewriteEngine On RewriteCond %{HTTP_HOST} ^admin\.example\.com$ [NC] RewriteRule ^(.*)$ /wp-admin/$1 [L] RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^wp-admin/(.*)$ https://admin.example.com/$1 [R=301,L] - Очистите кэш браузера и плагинов.
Типичные проблемы:
- После изменения WP_SITEURL вход на старый адрес /wp-admin перестаёт работать. Используйте ftp для возврата файла в исходное состояние.
- Поддомен может не загружать CSS/JS – требуется правильная настройка .htaccess для статических файлов.
- При включении кэширования (например, через Cloudflare) убедитесь, что поддомен исключён из кэширования.
Вариант 1: Изменение URL входа с помощью плагина WPS Hide Login
Вопрос: Как быстро и просто поменять адрес входа в админку, не редактируя файлы вручную?
Цель: скрыть стандартный /wp-admin от ботов и злоумышленников.
- Установите и активируйте плагин WPS Hide Login.
- Перейдите в Настройки -> Общие -> WPS Hide Login.
- Укажите новый адрес, например /mysecretlogin.
- Сохраните изменения. Теперь админка доступна по example.com/mysecretlogin.
Пример кода из плагина (вы можете добавить аналогичную логику самостоятельно в functions.php):
add_action('init', 'custom_login_url');
function custom_login_url() {
$new_login = 'mysecretlogin'; // изменить на свой
if (isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], '/wp-login.php') !== false) {
wp_redirect(home_url('/' . $new_login));
exit;
}
}
Проблемы: при деактивации плагина доступ к админке теряется. Решение: временно включить плагин или восстановить стандартный адрес через ftp, отредактировав опции в базе данных.
Вариант 2: Ограничение доступа к wp-admin по IP через .htaccess
Вопрос: Как защитить панель администратора WordPress, разрешив вход только с определённых IP-адресов?
Цель: дополнительная безопасность для сайтов с фиксированным рабочим IP.
- Создайте файл .htaccess в папке /wp-admin/ (или отредактируйте существующий).
- Добавьте правила:
Order Deny,Allow Deny from all Allow from 192.168.1.100 Allow from 203.0.113.5 - Сохраните и проверьте доступ. Если ваш IP динамический, используйте DNS-запись или скрипт обновления.
Ошибки: блокировка самого себя. Решение: всегда имейте доступ через FTP или консоль хостинга для отката. Также возможно конфликт с кэширующими плагинами – отключайте кэш для /wp-admin.
Вариант 3: Перенос админки на отдельный домен с помощью wp-config.php и постоянных ссылок
Вопрос: Как настроить WordPress так, чтобы админ-панель работала на другом домене (например, admin-site.com), а публичная часть на основном .com?
Цель: полное разделение окружений, использование разных SSL-сертификатов.
- Настройте поддомен или второй домен на тот же сервер, указав ту же корневую папку WordPress.
- В wp-config.php добавьте:
define('WP_HOME', 'https://example.com'); define('WP_SITEURL', 'https://admin-site.com'); // Перенаправление входа if (preg_match('/^admin-site\.com/i', $_SERVER['HTTP_HOST'])) { define('ADMIN_COOKIE_PATH', '/'); } else { define('COOKIE_DOMAIN', 'example.com'); } - Настройте сервер (Apache/Nginx) так, чтобы запросы к wp-content и wp-includes обслуживались с основного домена для избежания проблем с CORS.
Проблемы: сложность в настройке путей к ресурсам, возможные ошибки сессии. Решение: используйте плагин для синхронизации мультисайтовости или тестируйте на локальном сервере.
Расширенные примеры кода и конфигурации
1. Полный пример .htaccess для работы админки на поддомене admin
# .htaccess в корне WordPress для раздельного доступа
RewriteEngine On
RewriteBase /
# Основной домен: перенаправляем wp-admin на поддомен
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^wp-admin/(.*)$ https://admin.example.com/wp-admin/$1 [R=301,L]
# Поддомен admin: обрабатываем как обычный WordPress
RewriteCond %{HTTP_HOST} ^admin\.example\.com$ [NC]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Результат: все запросы к /wp-admin на основном домене перенаправляются на поддомен, а поддомен корректно загружает WordPress.
2. Настройка для Nginx (серверный блок)
server {
listen 443 ssl;
server_name example.com;
location /wp-admin {
return 301 https://admin.example.com$request_uri;
}
# остальная конфигурация...
}
server {
listen 443 ssl;
server_name admin.example.com;
root /var/www/wordpress;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
include fastcgi_params;
}
}
Результат: админка на поддомене работает без ошибок, статика загружается с основного домена.
3. Использование констант для параллельного доступа (wp-config.php)
// Определяем текущий домен
$current_domain = $_SERVER['HTTP_HOST'];
if ($current_domain === 'admin.example.com' || $current_domain === 'admin.1.example.com') {
define('WP_SITEURL', 'https://' . $current_domain);
define('ADMIN_COOKIE_PATH', '/');
} else {
define('WP_SITEURL', 'https://example.com');
}
define('WP_HOME', 'https://example.com');
Результат: админка автоматически подстраивается под домен, с которого заходит пользователь.
4. Смена URL входа через functions.php без плагина
// Добавьте в functions.php активной темы
add_action('init', 'custom_login_redirect');
function custom_login_redirect() {
$slug = 'mysecret-area';
if (isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI'] === '/wp-login.php' && $_SERVER['REQUEST_METHOD'] === 'GET') {
wp_redirect(home_url($slug));
exit;
}
if (isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI'] === '/' . $slug) {
// Отображаем форму входа кастомно
require_once(ABSPATH . 'wp-login.php');
}
}
Результат: при переходе на /wp-login.php происходит редирект на /mysecret-area, где отображается форма входа. Обратите внимание, что это упрощённая версия, для производства лучше использовать плагин.
5. Защита wp-admin с помощью HTTP-аутентификации
# Создайте файл .htpasswd в защищённой директории
# Сгенерируйте пароль командой: htpasswd -c /path/to/.htpasswd user
# .htaccess в папке /wp-admin/
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/.htpasswd
Require valid-user
# Дополнительный фильтр по IP (опционально)
Order Deny,Allow
Deny from all
Allow from 192.168.1.0/24
Satisfy Any
При доступе к example.com/wp-admin браузер запросит логин и пароль. После ввода будет стандартная авторизация WordPress.