Настройка доступа к админке WordPress на домене .com

Раздел: WordPress -> Настройка панели администратора WordPress

Настройка доступа к панели администратора WordPress на домене .com может быть выполнена разными способами: от простого изменения URL входа до полного переноса админки на отдельный поддомен. Ниже рассмотрены несколько подходов с примерами кода и указанием типичных трудностей.

Основное решение: вход через поддомен admin.example.com

Как сделать так, чтобы панель управления WordPress открывалась по адресу admin.example.com, а основной сайт оставался на example.com?

Цель: разделить административную и публичную части, повысить безопасность, упростить управление cookie.

  1. Создайте поддомен admin.example.com в панели хостинга, укажите ту же корневую папку, где установлен WordPress.
  2. В файл 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)

  3. В файл .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]
  4. Очистите кэш браузера и плагинов.

Типичные проблемы:

  • После изменения WP_SITEURL вход на старый адрес /wp-admin перестаёт работать. Используйте ftp для возврата файла в исходное состояние.
  • Поддомен может не загружать CSS/JS – требуется правильная настройка .htaccess для статических файлов.
  • При включении кэширования (например, через Cloudflare) убедитесь, что поддомен исключён из кэширования.

Вариант 1: Изменение URL входа с помощью плагина WPS Hide Login

Вопрос: Как быстро и просто поменять адрес входа в админку, не редактируя файлы вручную?

Цель: скрыть стандартный /wp-admin от ботов и злоумышленников.

  1. Установите и активируйте плагин WPS Hide Login.
  2. Перейдите в Настройки -> Общие -> WPS Hide Login.
  3. Укажите новый адрес, например /mysecretlogin.
  4. Сохраните изменения. Теперь админка доступна по 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.

  1. Создайте файл .htaccess в папке /wp-admin/ (или отредактируйте существующий).
  2. Добавьте правила:
    Order Deny,Allow
    Deny from all
    Allow from 192.168.1.100
    Allow from 203.0.113.5
  3. Сохраните и проверьте доступ. Если ваш IP динамический, используйте DNS-запись или скрипт обновления.

Ошибки: блокировка самого себя. Решение: всегда имейте доступ через FTP или консоль хостинга для отката. Также возможно конфликт с кэширующими плагинами – отключайте кэш для /wp-admin.

Вариант 3: Перенос админки на отдельный домен с помощью wp-config.php и постоянных ссылок

Вопрос: Как настроить WordPress так, чтобы админ-панель работала на другом домене (например, admin-site.com), а публичная часть на основном .com?

Цель: полное разделение окружений, использование разных SSL-сертификатов.

  1. Настройте поддомен или второй домен на тот же сервер, указав ту же корневую папку WordPress.
  2. В 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');
    }
  3. Настройте сервер (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.

Админ-панель WordPress на домене .com - comments

En
Com wp wp admin php (php)