Как закрыть доступ к папке "wp-admin" в WordPress
Есть много советов как обезопасить WordPress. В числе прочих - изменить адрес формы логина и папку "wp-admin" админ панели. Но большинство предлагаемых решений мне не понравились. Я попробовал все что нашел и решил сделать все по-своему. Админ панель (wp-admin) обезопасил через редирект в .htaccess на протокол httpS (порт 443) недоступный снаружи без пароля. И форму логина тогда можно было уже не переименовывать.
Но есть в этом решении одна важная деталь. Адрес необходимый для работы Ajax содержит так же папку "wp-admin", и его надо оставить открытым, исключить из перенаправления. Для этого нужно в .htaccess добавить одно дополнительное правило.
При этом адрес формы ввода логина и пароля я все-же оставил измененным. Потому что не исключено что когда-нибудь в будущем ситуация может измениться и перенаправление для папки "wp-admin" админ панели может быть придется все-же убрать.
Изменения .htaccess для перенаправления wp-admin на https
Суть изменений в том что сайт всем доступен на порту 80 (т.е. стандартный http), но при попытке зайти по адресу админ панели "wp-admin", происходит перенаправление на https (443 порт), исключая адрес для ajax-запросов. Это само по-себе полезно, но в некоторых ситуациях https можно закрыть паролем (тогда доступна снаружи будет только http версия сайта). Хотя сейчас http уже вообще считается нежелательным и в будущем возможно эта идея будет не актуальна.
Тем не менее - что нужно изменить в файле .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
...
RewriteCond %{HTTP_HOST} ^САЙТ\.com$ [NC]
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^/wp-admin/admin-ajax.php
RewriteRule ^wp-admin(.*)$ https://САЙТ.com/wp-admin$1 [R=301,L]
</IfModule>
ВАЖНО! Слово "САЙТ" - нужно заменить на доменное имя своего сайта.
Во многих примерах используют слеш в имени папки в последней строке (экранированный
В той ситуации с которой я столкнулся доступ на сайт по http (80 порт) открыт, а по httpS (443 порт) - закрыт паролем.
Но даже если без этого - приведенный выше пример может пригодиться для других целей. Правила обязательного перенаправления на httpS только для одной папки сайта (здесь "wp-admin"), но исключая один адрес в ней (например для Ajax-запросов) может быть полезны просто в качестве примера.
Проверка
Нужно выйти из админки (разлогинится). После этого попытаться ввести адрес
КСТАТИ! Если страница админки не существует то редирект не сработает! Будет показана стандартная 404.
Форма логина - изменяем имя с wp-login.php на свое
Это здесь просто в качестве дополнения, поскольку уже не относится к основной теме. Адрес формы логина обычно меняют чтобы отсечь нагрузку на сервер от ботов. На самом деле это слишком просто, поэтому я и решил упомянуть здесь об этом тоже.
Итак.
Нужно переименовать файл "wp-login.php" на "_свое_имя_.php" и сделать замену в коде в двух местах:
1. В самом файле "_свое_имя_.php" - заменить везде где там встретится "wp-login.php" на новое имя.
2. Сделать такую-же замену в файле
ВАЖНО! После обновления движка эту операцию придется повторить.
Оставьте комментарий
Вы можете войти под своим логином или зарегистрироваться на сайте.