Читая заголовок поста, вы могли подумать, а разве директория wp-admin не защищена изначально? Ведь для начала нужно авторизоваться в WordPress, чтобы попасть внутрь. С одной стороны это так, но ведь никто не отменял взломы и атаки на сайт. Да и лишняя прослойка в безопасности не помешает. К примеру, популярные сайты вроде Mashable защищают дополнительно свои внутренние директории. В этом руководстве я покажу вам, как защитить паролем доступ к папке wp-admin в WordPress.
cPanel
Для начала я приведу инструкцию по установке пароля через cPanel. Почему именно cPanel? Потому что это одна из самых популярных панелей управления хостингом в мире.
Войдите в вашу панель cPanel (вы можете зайти в демо-версию панели здесь), и нажмите на иконку Password Protect Directories в секции Security.
Как только вы нажмете, появится всплывающее окно с выбором размещения корневой директории, просто нажмите Go (выбрано по умолчанию Web Root).
Затем перейдите к вашей папке wp-admin, жмите на изображение папки, чтобы попасть во внутренний каталог. После выбора папки wp-admin вы увидите:
Просто отметьте галочкой поле Password protect, затем создайте нового пользователя для доступа к директории, указав имя и пароль. Вот и все! Теперь при попытке войти в каталог wp-admin вы увидите окно авторизации:
Ручной способ
Для начала создайте файл .htpasswds. Вы можете это легко сделать, воспользовавшись этим генератором. Затем загрузите этот файл на один уровень выше от директории /public_html/. У вас должен получиться примерно вот такой путь:
home/user/.htpasswds/public_html/wp-admin/passwd/
После этого создайте файл .htaccess и загрузите его в директорию wp-admin. Добавьте следующий код в файл .htaccess:
AuthName "Admins Only" AuthUserFile /home/yourdirectory/.htpasswds/public_html/wp-admin/passwd AuthGroupFile /dev/null AuthType basic require user putyourusernamehere
Вам нужно будет вписать в код свой username. И не забудьте указать правильный путь для AuthUserFile.
Если вы видите ошибку 404 или другие ошибки
Такое может случаться в зависимости от того, как настроен ваш сервер. Можно попытаться исправить это следующим образом. Откройте ваш основной файл .htaccess в WordPress и добавьте туда следующий код перед началом описания WordPress-правил (WordPress rules):
ErrorDocument 401 default
Это должно помочь. Теперь у вас двойная защита для Консоли и всей остальной зоны wp-admin. Это неплохая альтернатива другому способу, который мы описывали в уроке "Как ограничить число попыток входа в консоль WordPress".
Обновление: Как исправить неработающую Ajax функциональность
Если вы защитите паролем вашу wp-admin директорию, это может сломать Ajax функциональность во front-end (если таковой используется). Это можно легко исправить.
Откройте файл .htaccess, который находится в каталоге /wp-admin/ (это не основной файл .htaccess, о котором я только что говорил) и добавьте в него следующий код:
<Files admin-ajax.php> Order allow,deny Allow from all Satisfy any </Files>
Комментарии к записи: 2
Еще можно разрешить доступ с определенного ip
Файл .htaccess должен содержать
___________________
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
allow from yyy.yyy.yyy.yyy
___________________
В какой директории лежит — на ту и распространяется
Не очень удобно. У меня есть пользователи, которым нужен доступ в админку — им придется дважды вводить пароль.