WordPress: Jak usunąć alias "login" dla wp-login.php

Spis treści

Przeglądając sobie ostatnio logi mojego serwera Apache2, zauważyłem tam dziwną aktywność. Jakieś boty czy też inne ustrojstwa próbują od czasu do czasu uzyskać dostęp do formularza logowania tego bloga. Jako, że tutaj mamy do czynienia z WordPress'em oraz ochroną pliku wp-login.php oraz katalogu wp-admin/ za pomocą certyfikatów, to taki bot nigdy nie uzyska dostępu do tych zasobów. Niemniej jednak, te automaty generują zapytania do serwera o zasób login , który z kolei przekierowuje je pod wp-login.php za pomocą kodu 301 lub 302. Moglibyśmy uniknąć tego typu przekierowań zwracając im kod 404 i przy tym odciążając nieco serwer www. W tym krótkim artykule zobaczymy jak tego typu zabieg przeprowadzić.

Zapytania o wp-login.php i login

WordPress standardowo tworzy alias na plik wp-login.php w postaci login . Nie trzeba zatem wpisywać w pasku adresu nazwy pliku, by uzyskać formularz logowania, bo wystarczy wpisać samo login . W ten sposób serwer zwykle zwraca kod 301, który informuje przeglądarkę o przeniesieniu zasobu pod inny adres (tzw. Permanent Redirect). Czasami też może zostać zwrócony kod 302, który informuję klienta o odnalezieniu zasobu. W obu tych przypadkach zostanie zwrócony nowy adres zasobu, pod który przeglądarka powinna się udać. Poniżej przykład:

wp-login-php-wordpress-ukrycie

Wyżej w nagłówku widzimy pole Location , a w nim wp-login.php . Zatem niby wpisujemy w przeglądarce login , a i tak lądujemy docelowo na wp-login.php i dopiero wtedy zwracany jest nam formularz logowania. Problem w tym, że te wszystkie boty szukające formularza logowania nie do końca mogą być świadome naszej konfiguracji WordPress'a. W efekcie wysyłają dwa czy trzy zapytania, by sprawdzić, czy dany serwer www hostuje jakąś stronę opartą o tego CMS'a. Moglibyśmy im ulżyć w cierpieniach i zwrócić od razu kod 404 informujący je o tym, że takiego zasobu nie ma na serwerze.

Jak usunąć alias "login"

By usunąć alias login w WordPress'ie, musimy usunąć akcję wp_redirect_admin_locations. Możemy to zrobić za pomocą pliku functions.php , który jest zlokalizowany w katalogu wykorzystywanego motywu. W tym pliku dodajemy tę oto poniższą linijkę:

remove_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );

Jeśli teraz spróbujemy odwiedzić login , to powinien zostać zwrócony kod 404:

wp-login-php-wordpress-ukrycie

Usunięcie tej powyższej akcji ma także wpływ na aliasy admin oraz dashboard .

Mikhail Morfikov avatar
Mikhail Morfikov
Po ponad 10 latach spędzonych z różnej maści linux'ami (Debian/Ubuntu, OpenWRT, Android) mogę śmiało powiedzieć, że nie ma rzeczy niemożliwych i problemów, których nie da się rozwiązać. Jedną umiejętność, którą ludzki umysł musi posiąść, by wybrnąć nawet z tej najbardziej nieprzyjemniej sytuacji, to zdolność logicznego rozumowania.