Как программно скрыть wp-login.php в Wordpress?

Мне удалось создать URL-адрес /login, чтобы перенаправить меня на страницу /wp-login.php

В моем .httacces у меня есть следующий код

RewriteRule ^login$ wp-login.php [NC,L]

В functions.php (в моей пользовательской теме) я добавил это

 add_filter('site_url',  'wplogin_filter', 10, 3);
function wplogin_filter( $url, $path, $orig_scheme )
{
 $old  = array( "/(wp-login\.php)/");
 $new  = array( "login");
 return preg_replace( $old, $new, $url, 1);
}

Проблема в том, как запретить доступ к странице wp-login.php, не отключая ее. В приведенном выше решении видны оба URL-адреса /login и /wp-login.php

Как я могу постоянно «скрывать» wp-login.php без использования плагина?


person kost    schedule 13.03.2017    source источник
comment
Кто-нибудь, у кого была похожая проблема без использования плагина?   -  person kost    schedule 15.03.2017


Ответы (2)


Однажды я использовал это в своем файле .httaccess.

Код:

<Files "whatever.php">
require all denied
require host localhost
require ip 127.0.0.1
require ip xxx.yyy.zzz.aaa
</Files>

Это предотвращает любой внешний вход в what.php

person Community    schedule 13.03.2017
comment
Это позволяет получить доступ с определенного IP-адреса, как я вижу. Есть ли другое решение для защиты wp-login.php? - person kost; 14.03.2017
comment
Я так думаю, я бы сказал, что это самое простое. - person ; 14.03.2017

Вам действительно не нужно скрывать это. Просто перенаправьте доступ на домашнюю страницу — или на любую другую страницу.

add_filter( 'login_url', 'my_redirect_login', 10, 3 );
function my_redirect_login(){
    if ($_SERVER['REQUEST_URI']!='/wp-login.php') return;
    header( 'Location: '.home_url(null, 'https') );
    exit;   
}
person Juergen    schedule 01.06.2020