Приветствую, дорогой гость! В данной статье мы рассмотрим, как скрыть URL входа админ-панели WordPress. Похожая тема уже была затронута на блоге DayAfterNight, она называлась «Как изменить адрес входа в админ-панель WordPress«. Ко мне очень часто обращались со следующим:
Почему не скрывается админ-панель?
Если набрать wp-admin, откроется новая страница логина.
Друзья, прошлая статья была направлена именно на замену страницы логина WordPress, а не на ее скрытие от посторонних глаз. Мы заменяли wp-login.php на свое название, например, admin-login.php. Сегодня, скроем данную страницу.
Итак, для того, чтобы скрыть страницу входа, нам потребуется зайти на хостинг и отредактировать файл .htaccess, который находится в папке вашего WordPress.
Например: Ваш_хостинг/httpdocs/wordpress/.htaccess
В файл .htaccess нужно вставить следующий код:
# Hide admin URL start <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^my_admin_url/?$ /wp-login.php?my_secret_key [R,L] RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$ RewriteRule ^my_admin_url/?$ /wp-login.php?my_secret_key&redirect_to=/wp-admin/ [R,L] RewriteRule ^my_admin_url/?$ /wp-admin/?my_secret_key [R,L] RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php RewriteCond %{HTTP_REFERER} !^(.*)site.com/wp-admin RewriteCond %{HTTP_REFERER} !^(.*)site.com/wp-login\.php RewriteCond %{HTTP_REFERER} !^(.*)site.com/my_admin_url RewriteCond %{QUERY_STRING} !^my_secret_key RewriteCond %{QUERY_STRING} !^action=logout RewriteCond %{QUERY_STRING} !^action=rp RewriteCond %{QUERY_STRING} !^action=postpass RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$ RewriteRule ^.*wp-admin/?|^.*wp-login\.php /not_found [R,L] RewriteCond %{QUERY_STRING} ^loggedout=true RewriteRule ^.*$ /wp-login.php?my_secret_key [R,L] </IfModule> # Hide admin URL end
my_admin_url — замените название, на желаемое. По этому адресу будет доступен ваш сайт.
Например: uznipc.com/my_admin_url
my_secret_key — вместо данной строки придумайте сложный ключ и запишите его.
Например: 234sdf79862gsdf7634yrgksf876
site.com — замените на домен вашего сайта.
Также, если вы воспользовались предыдущей статьей о замене страницы wp-login.php (стандартная страница входа), измените строки в коде.
Например: Ваша страница называется admin-login.php, замените 5 значений wp-login в коде на admin-login.
После этих простых манипуляций мы получим:
- Ошибка not_found при наборе site.com/wp-admin
- Ошибка доступа при наборе site.com/wp-login.php
- Доступ к сайту по красивой, придуманной вами ссылке, такой, как site.com/my_admin_url
- Доступ к URL админки по придуманному вами паролю site.com/wp-login.php?my_secret_key. Например, для измененной страницы и выдуманного пароля site.com/admin-login.php?234sdf79862gsdf7634yrgksf876
Данная статья была написана после полугодовалого перерыва. Что случилось со мной, а также другие увлекательные уроки и полезности вы сможете прочитать в следующих статьях.
Спасибо за Вашу подробную инструкцию. Всё отлично получилось с первого раза.
Татьяна, пожалуйста
Здравствуйте.
Отличная статья. с одним сайтом все получилось, но возникла проблема с кириллическим доменом. Если адрес сайта указывать в Punycode, то все работает, как будто ничего и не менялось, если в формате мой-сайт.рф, то всегда происходит переадресация на страницу 404. в чем может быть проблема?
Здравствуйте, Павел.
Спасибо 🙂
Не приходилось работать с кириллическими доменами, даже не знаю, что вам подсказать, извините 💡
Сергей, а как вы сделали, чтобы у вас не отображался автор постов?
Ярослав, в index.php (главная страница) либо с page.php удалите или заккоментируйте вывод автора
< ?php the_author(); ?>
У меня нет слова author в этих файлах. Ни в корне, ни в папке темы. Видимо это зависит от версии ВП. Как ещё, по-вашему, может это решаться?
Решение где-то в вашей теме. Скиньте тему на seregadadk(СобакА)mail.ru, я гляну 🙂
О, вы так любезны!
Отправил тему Вордпресс в которой хочется скрыть автора.
Проверьте почту 🙂
О! Получилось! Автор теперь не отображается! Большое спасибо! ))
Большое пожалуйста 🙂
Заполнять только это? А то не получается у меня что — то.
RewriteCond %{HTTP_REFERER} !^(.*)site.com/wp-login\.php
RewriteCond %{HTTP_REFERER} !^(.*)site.com/my_admin_url
RewriteCond %{QUERY_STRING} !^my_secret_key
Здравствуйте, Владислав. Заменять нужно:
my_admin_url – замените название, на желаемое. По этому адресу будет доступен ваш сайт.
my_secret_key – ключ
site.com – замените на домен вашего сайта.
Также, если вы воспользовались предыдущей статьей о замене страницы wp-login.php (стандартная страница входа), измените строки в коде.
Добрый день, спасибо за данный материал.
Из предыдущей статьи (про изменение файла wp-login.php) работает всё, но админка по прежнему доступна по адресу /wp-admin , просто происходит редирект на новый файл, который заменил wp-login.php. Из-за этого попробовал внедрить на сайт материал, написанный в данной статье.
Не получилось ничего, кроме того, что при наборе /wp-admin выдаёт ошибку 404 (что в принципе хорошо). Секретный код не работает и новый урл админки тоже. Сейчас доступ в админку один, через файл /wp-login.php (с изменённым названием конечно).
Возможно, это происходит по следующей причине: когда я пытался включить кэширование фалов сайта при помощи функции в файле .htaccess, возникли большие проблемы, как оказалось эта функция включается со стороны моего хостинга и включали кэширование уже они на своей стороне (после обращения в техническую поддержку), без моего участия. Может ли с этим быть связана моя проблема, как Вы считаете? Странно, что после внедрения данного кода замаскировалась страница /wp-admin – значит, часть кода сработала.
При наборе свой сайт.wp-login.php после данных изменений, выдаёт не 404, а цикличное перенаправление на странице-это нормально?
Здравствуйте, Александр.
В каждом хостинге свои заморочки и зачастую именно из-за него у одних работает, а у других нет. Возможно, претерпела изменений и сама CMS WP. Статья писалась для более ранней версии. 🙂
Добрый день!
Все сделала как описано выше. Итог — выдает ошибки при входе по ссылкам site.com/wp-admin
и site.com/wp-login.php
Зайти в админку можно только через site.com/wp-login.php?my_secret_key
А Доступ к сайту по красивой, придуманной вами ссылке, такой, как site.com/my_admin_url Не работает!
Не подскажите, что я могла сделать не так?
Здравствуйте, Александра. 🙂 Как вы могли заметить, значения my_admin_url повторяются в коде несколько раз, перепроверьте, все ли вы заменили значения на свои.
У меня проблем не возникает, все хорошо работает и на последней версии ВП.
Сделал также как Александра с помощью автозамены и такая же проблема. Через site.com/wp-login.php?my_secret_key заходит, а по второй ссылке — нет.
Я постараюсь найти причину этого недоразумения :smilie:
Хм, все сделала заново… пользовалась Заменой значения одного на другое — пропустить не могла. А ссылка my_admin_url все равно выводит на страницу ошибки 404.
В общем до авторизации в админке ссылки site.com/wp-admin и site.com/wp-login.php не работают. А после авторизации через site.com/wp-login.php?my_secret_key ссылка site.com/wp-admin работает 🙂
Есть смысл так оставлять?
Возможно, WP претерпел каких-либо изменений, в версии WordPress 4.2.5 все отлично работает.
Если удобно входить через secret key, то почему нет?)
🙂
Спасибо. На конту покликал))) Инфа полезная.
Андрей, пожалуйста 🙂
Здравствуйте!
Воспользовались вашим кодом, помог, спасибо!
Остался вопрос, на данный момент вхожу на сайт по адресу, site.ru/wp-login.php?my_secret_key — работает.
*my_admin_url – замените название, на желаемое. По этому адресу будет доступен ваш сайт. — не работает, правильно понимаю должен быть заменен адрес /wp-admin/ ?
Подскажите имеет смысл заменять адреса админки и адрес формы входа после скрытия?
my_admin_url не работает в версии WP выше 4.2, почему, еще не разобрался. У меня WP 4.2.5 все без нареканий. 🙂
Это по вашему желанию, ранее на wp-admin.php производились массовые ддосы. 🙂
Спасибо за статьи!
Александр, и вам спасибо за отзыв 🙂
Фух, кажется что-то получилось, спасибо вам за инструкцию 🙂 Только вот у меня заходит в админку только по ключу, но в целом, именно это и нужно. До этого стоял плагин Login lock down, который ограничивал кол-во попыток на авторизацию. Так вот теперь его уберу, потому что в админку никто так просто не проберется. Спасибо еще раз!
Здвравствуйте, Миша. Всегда пожалуйста 🙂 Сейчас, те кто мне пишет, разделились на тех у кого все отлично работает и на последней версии ВП, и те у кого не работает на более ранних. Остается думать, что дело в хостинге. Интересно, какой хостинг вы используете?
Пока обычный shared-хостинг от Айхор (Ihor). Но через пару дней перейду на VPS тариф от этого же хостера
Дело ваше, но, мне кажется, до 1-2 тысяч посетителей переплачивать не стоит 🙂
Просто уж очень выгодные у них тарифы. VPS за 250 рублей, поэтому я соблазнился)
Я чуть было не соблазнился на Fozzy, но понял, что еще рановато 🙂
у меня все получиться, админ панель откривает по ссылку который я написал но один проблема есть, зайду в админ панел набираю логин и парол но не входит. что нужно сделать?
Внимательно посмотрите, возможно, что-то не заменили 🙂
RewriteEngine On
RewriteRule ^vhod-admin/?$ /vhod-admin.php?qweasd328 [R,L]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^vhod-admin/?$ /vhod-admin.php?qweasd328&redirect_to=/wp-admin/ [R,L]
RewriteRule ^vhod-admin/?$ /wp-admin/?qweasd328 [R,L]
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php
RewriteCond %{HTTP_REFERER} !^(.*)extrit.com/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)extrit.com/vhod-admin\.php
RewriteCond %{HTTP_REFERER} !^(.*)extrit.com/vhod-admin
RewriteCond %{QUERY_STRING} !^qweasd328
RewriteCond %{QUERY_STRING} !^action=logout
RewriteCond %{QUERY_STRING} !^action=rp
RewriteCond %{QUERY_STRING} !^action=postpass
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^.*wp-admin/?|^.*wp-login\.php /not_found [R,L]
RewriteCond %{QUERY_STRING} ^loggedout=true
RewriteRule ^.*$ /vhod-admin.php?qweasd328 [R,L]
/vhod-admin — новый адрес админки
/vhod-admin.php — новая страница входа
1. Если перейти на /wp-login.php, то редиректит на vhod-admin.php
2. Ошибка по адресу /vhod-admin
Что я сделал не так?
По адресу /vhod-admin.php всё норм.
Александр, посмотрите на 19 строку кода в вашем комментарии, вы не заменили одно значение wp-login. А редирект с wp-login происходит скорее всего из-за того, что вы уже вошли, как администратор, попробуйте с другого браузера набрать путь. У меня, на вашем сайте выводится страница not_found 404 при наборе wp-login.php.
Александр, благодарю за чудесную статью, которая написана понятно и самое главное актуально! Желаю успехов Вам в работе и в ваших проектах! Можете, пожалуйста, рассказать для чего используется my_secret_key? Насколько я понял он не привязывается к логину для захода в админ панель, а используется для усложнения адресной строки, чтобы не удалось подобрать вредителям логин, верно? 🙂
Олег, я присоединяюсь и также, желаю Александру всего наилучшего. Да, ключ, как запасной вариант 🙂
Все работает, только вот после замены в файле .htaccess записи не отображаются вовсе, вот что выдает:
«Not Found
The requested URL /hello-2/ was not found on this server. »
В чем может быть проблема ?
Попробуйте не заменять, а добавить в начало файла данный код, не удаляя тот, что имеется.
Готово, благодарю за статью и помощь.
Пожалуйста 🙂
А как спрятать сам файл htaccess ?
Он у меня открыт для любого.
Здравствуйте 🙂 Поставьте атрибут (права файла на хостинге) 600, то есть, только владелец сможет посмотреть и изменить 🙂
Скажите а нельзя сделать так что при наборе стандартного адреса админки происходил бы редирект на главную страницу а не какие-то там ошибки? 😉
Замените строчку RewriteRule ^.*wp-admin/?|^.*wp-login\.php /not_found [R,L] на RewriteRule ^.*wp-admin/?|^.*wp-login\.php /index.php [R,L] и будет кидать на главную, хотя я бы посоветовал оставить 404, что то там с сео и поискавиками связано.
Автору спасибо, но что то у меня не работает..точнее работает но доступа в админку нет через my_admin_url выходит ошибка 404…предыдущей статьёй не пользовался, в шаблоне есть своя форма регистрации и авторизации, нужно было лишь перенаправлять всех на 404 по запросу wp-admin и wp-login 🙁
Здравствуйте, Сергей , спасибо, все получилось, только не пойму зачем нужна вообще эта ссылка site.com/my_admin_url?
Ведь идет переход на главную
Здравствуйте, Надежда. Эта ссылка для вас, чтобы вы набирали в адресной строке site.ru/my_admin_url, а не, скажем, site.com/admin-login.php?234sdf79862gsdf7634yrgksf876 🙂
Добрый день, подскажите — нельзя ли заменить ссылку для входа site.com/admin-login.php?234sdf79862gsdf7634yrgksf876
на ссылку для входа site.com/234sdf79862gsdf7634yrgksf876
то есть без admin-login.php?
Это делал плагин iThemes Security, сейчас там нет такой опции 😉
Здравствуйе, Ольга. В данном примере, возможности реализации нет 🙂
Для тех, у кого не работает site.com/my_admin_url
Файл .htaccess до изменений уже содержит некую информацию.
Для того, чтобы работала site.com/my_admin_url приведённый в статье код необходимо вставлять в самое начало файла .htaccess
Всё остальное содержимое должно идти уже после кода из статьи.
Мужик я не знаю кто ты, но большое спасибо тебе!! ты реально помог, не понимаю почему автор не написал этого в статье, что содержимое лучше оставить и в самое начало воткнуть этот кот. Специально зарегался здесь чтобы сказать спасибо тебе!
Не всем это нужно и не всем поможет. У меня и еще на нескольких сайтах, которым я помогал код стоит в конце файла htaccess и все отлично работает. Здесь регистрироваться не нужно, чтобы оставить комментарий 🙂
Serge, пожалуйста, друг!
Стучись в скайп: a.hotulev
Сергей, для тех, у кого не работает вход по кастомной ссылке этот хук (постановка кода в начало файла) поможет. Судя по комментариям — таких не мало.
😉
Еще я не понимаю почему у меня защитный ключ виден в URL, хакеры могут им как то воспользоваться?
Возможно, он виден только администратору, т.е, вам? 🙂