Как переименовать или скрыть wp-login.php?
Есть ли способ изменить URL wp-login.php? Кажется небезопасным, что любой, кто когда-либо использовал WordPress, может легко определить, использует ли ваш сайт эту CMS, и получить прямой доступ к странице входа.
Раньше существовал плагин под названием "Stealth login", но он не обновлялся (именно поэтому мы не хотим полагаться на плагины).
Если вы делаете это для своего сайта, то использование .htaccess может быть самым простым способом, хотя это может стать сложным, если вы хотите, чтобы это работало для плагина, так как потребуется учитывать множество тонких различий в конфигурации.
Вот несколько статей, которые могут помочь; не все из них напрямую отвечают на ваш вопрос, но все они так или иначе затрагивают ваши опасения по безопасности:
- Скрытие страницы входа в админку WordPress (WP-Admin)
- Как предотвратить атаки на страницу wp-login.php в WordPress
- Защита вашего WordPress: работа с файлом .htaccess
- Как изменить wp-login.php на login
- Как защитить wp-login и wp-admin
- Усиление безопасности WordPress с помощью Mod Rewrite и htaccess
И, конечно же, нет лучшего эксперта по Apache и WordPress, чем автор блога AskApache. Обязательно ознакомьтесь с этими материалами:
Я недавно столкнулся с той же проблемой, и вы правы — плагин Stealth больше не поддерживается. Однако, поскольку я понял, что Stealth был лучшим вариантом, я сделал чистую установку WordPress последней версии, которую поддерживал этот плагин, чтобы разобраться, как он работает. Оказалось, что плагин всего лишь создает файл .htaccess с некоторой магией. Этот файл будет выглядеть примерно так:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^logout wp-login.php?action=logout&_wpnonce=asdfasdf&stealth_out_key=asdfasdfasdfasdf [L]
RewriteRule ^login wp-login.php?stealth_in_key=asdfasdfasdf&redirect_to=http://example.com/login [R,L]
RewriteRule ^admin wp-admin/?stealth_admin_key=asdfasdfasdfasdf [R,L]
RewriteCond %{HTTP_REFERER} !^http://example.com/wp-admin
RewriteCond %{HTTP_REFERER} !^http://example.com/wp-login\.php
RewriteCond %{HTTP_REFERER} !^http://example.com/login
RewriteCond %{HTTP_REFERER} !^http://example.com/admin
RewriteCond %{QUERY_STRING} !^stealth_in_key=asdfasdfasdfasdf
RewriteCond %{QUERY_STRING} !^stealth_out_key=asdfasdfasdfasdfasd
RewriteCond %{QUERY_STRING} !^stealth_reg_key=asdfasdfasdfasdfasdf
RewriteCond %{QUERY_STRING} !^stealth_admin_key=asdfasdfasdfasdfasdf
RewriteRule ^wp-login\.php http://example.com [R,L]
RewriteCond %{QUERY_STRING} ^loggedout=true
RewriteRule ^wp-login\.php http://example.com [R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Я заменил все ключи на вариации "asdfasdfasdf" — очевидно, вам нужно будет создать свои собственные секретные ключи.
Надеюсь, это поможет!
Вот что я сделал:
Я просто переименовал директорию wp-admin в какое-нибудь неочевидное имя, например pfgkn.
При переходе по адресу http://ваш-домен.com/wp-admin/ вас перенаправляет на главную страницу http://ваш-домен.com/ или куда у вас настроен редирект для 404 ошибки.
Когда мне нужно войти - я просто переименовываю директорию pfgkn обратно в wp-admin, вношу изменения, а затем снова переименовываю её в pfgkn.