8 błędów przy zmianie adresu logowania w WordPressie

Ukryte drzwi w murze porośniętym bluszczem, z ciepłym światłem w szczelinie, obok namalowane fałszywe drzwi w świetle latarni

Smart Protector to wtyczka do WordPressa, która utrudnia niepowołanym osobom dostęp do panelu strony. Przygotował ją BeeClear, twórca wtyczek do WordPressa i aplikacji na smartfony. Jedna z jej funkcji przenosi ekran logowania pod własny adres i ukrywa standardowy /wp-login.php. Zmiana adresu logowania wygląda na prosty zabieg, a jednak łatwo przy niej o pomyłki, które zdradzają nowe wejście albo odcinają administratora od kokpitu. Oto osiem typowych błędów i sposób, w jaki wtyczka zapobiega każdemu z nich.

Dlaczego przekierowanie /wp-login.php na stronę główną to błąd?

Przekierowanie /wp-login.php na stronę główną to błąd, bo każda wizyta bota kończy się wtedy pełnym wyświetleniem witryny. Automaty i tak odpytują ten plik, więc serwer wykonuje mnóstwo zbędnej pracy. Smart Protector domyślnie odpowiada na takie żądanie kodem 404, oznaczonym w ustawieniach jako zalecany. Tę odpowiedź zwraca bardzo wcześnie, bez ładowania motywu. To najtańsza reakcja na ruch, którego nie da się uniknąć.

Tak wyglądają trzy warianty ustawienia „When /wp-login.php is requested”:

WariantCo dostaje odwiedzającyKoszt dla serwera
Return 404 (recommended)stronę „nie znaleziono”najniższy, bez renderowania motywu
Redirect to homepageprzekierowanie na stronę głównąpełne wyświetlenie strony głównej
Redirect to custom URLprzekierowanie pod ścieżkę tej witryny, np. /welcome/wyświetlenie strony docelowej

Czy wejście gościa na /wp-admin zdradza nowy adres logowania?

Wejście gościa na /wp-admin zdradza nowy adres logowania w WordPressie bez dodatkowej ochrony. System odsyła niezalogowanego odwiedzającego prosto na stronę z formularzem. Ukrycie slugu traci wtedy sens, skoro wystarczy wpisać /wp-admin. Smart Protector ma na to osobne ustawienie „When a guest visits /wp-admin”. Gość dostaje jedną z trzech odpowiedzi: tę samą co przy /wp-login.php, przekierowanie na stronę główną albo na wybraną ścieżkę. Twojego prawdziwego URL-a nie zobaczy w żadnym wariancie.

Reguła działa precyzyjnie. Wtyczka porównuje żądanie z rzeczywistą ścieżką kokpitu, dlatego wpis pod /blog/wp-admin-tips/ nie uchodzi za wizytę w panelu. Poprawnie obsługuje też instalacje w podkatalogu. Pomija przy tym admin-ajax.php, async-upload.php i admin-post.php. Te punkty obsługują ruch niezalogowanych i wydają własne przekierowania, więc formularz wysłany przez gościa nie ląduje nagle na stronie głównej.

Co dzieje się z linkami do resetu hasła po zmianie adresu?

Linki do resetu hasła po zmianie adresu działają dalej, choć wiele osób zakłada, że przestaną. Taki link prowadzi na /wp-login.php z kluczem resetu w parametrach. Smart Protector przekazuje go pod nową ścieżkę i zachowuje klucz oraz nazwę konta. Wiadomości leżące już w skrzynkach pozostają więc ważne. Tak samo wtyczka traktuje prośbę o nowe hasło i ekran potwierdzenia wysyłki.

Drugą pułapką są odnośniki w motywie i innych wtyczkach. Smart Protector podmienia linki do zalogowania, wylogowania, rejestracji i odzyskiwania hasła, które generują funkcje WordPressa. Przycisk „Zaloguj” zbudowany na tych funkcjach od razu wskazuje właściwe miejsce. Odnośnik wpisany ręcznie jako /wp-login.php dostanie jednak odpowiedź z ustawienia ukrywania. Warto go więc poprawić przy okazji wdrożenia.

Czemu slug logowania nie może powtarzać adresu istniejącej strony?

Slug logowania, czyli końcówka URL-a prowadząca do formularza, nie może powtarzać adresu istniejącej strony, bo ją przesłoni. Domyślnie slug brzmi „login”, a formularz działa pod /login/. Reguła przepisywania ścieżek ma pierwszeństwo przed treścią pod tym samym URL-em. Taka podstrona przestaje być osiągalna dla czytelników. Smart Protector sprawdza przy zapisie wpisy i strony witryny, a przy kolizji pokazuje ostrzeżenie ze slugiem i tytułem zagrożonej treści.

Wtyczka pilnuje też formy samego slugu. Oczyszcza go do postaci bezpiecznej w URL-u, a próbę ustawienia „wp-login” zamienia na „login”. Pod polem widzisz aktualną ścieżkę jako klikalny link. Sprawdzisz ją więc jednym kliknięciem, zanim się wylogujesz.

Jak nie zablokować się po ukryciu ekranu logowania?

Po ukryciu ekranu logowania blokuje się zwykle ten, kto nie zapisał nowej ścieżki przed wylogowaniem. Dodaj ją do zakładek zaraz po zapisaniu ustawień. Smart Protector sam o tym przypomina jednorazowym komunikatem po aktywacji, z dokładnym URL-em formularza. Komunikat pojawia się również wtedy, gdy wtyczka przejmie ustawienia zostawione w bazie przez wcześniejszą instalację. Administrator nie zostanie więc zaskoczony slugiem, którego nigdy sam nie wybierał.

Gdy zapisana ścieżka mimo wszystko przepadnie, nie tracisz dostępu na dobre. Masz trzy drogi powrotu:

  • odczytujesz aktualny slug przez WP-CLI z opcji wtyczki, niczego nie wyłączając,
  • wyłączasz ukrywanie jednym poleceniem WP-CLI, po czym /wp-login.php znów wpuszcza użytkowników,
  • zmieniasz nazwę katalogu wtyczki przez SFTP, a standardowy formularz wraca natychmiast.

Dlaczego przekierowanie z ukrytego logowania nie powinno wychodzić poza witrynę?

Przekierowanie z ukrytego logowania nie powinno wychodzić poza witrynę, bo wtedy Twoja domena odsyła ruch w obce miejsce. Od wersji 1.10.4 Smart Protector przyjmuje w polu „Redirect to custom URL” wyłącznie ścieżkę tej witryny, na przykład /welcome/. Wartość z innej domeny odrzuca przy zapisie. Nie przepada ona przy tym bez słowa. Ekran ustawień pokazuje błąd z nazwą pola i odrzuconą wartością, a import konfiguracji zgłasza to tak samo.

Pełny URL we własnej domenie też bywał pułapką. Otwarcie witryny pod innym hostem, na przykład lokalnym albo przez tunel podglądu, psuło takie przekierowanie. Odwiedzający lądowali wtedy w panelu administracyjnym zamiast na wskazanej stronie. Teraz wtyczka zapisuje taki URL jako ścieżkę i łączy go z domeną, pod którą serwis jest akurat otwarty. Przekierowanie zachowuje się więc tak samo niezależnie od hosta.

Czy do ukrycia wp-login.php trzeba edytować .htaccess?

Do ukrycia wp-login.php nie trzeba edytować .htaccess, a ręczne reguły w plikach serwera łatwo później zgubić. Smart Protector nie zmienia .htaccess, wp-config.php ani motywu. Zapisuje wyłącznie własną opcję, metadane użytkowników i reguły przepisywania ścieżek WordPressa. Po zmianie slugu sam odświeża te reguły, więc nowy URL działa od razu.

Taki układ ma praktyczną zaletę. Wyłączenie wtyczki natychmiast przywraca standardowy formularz, bez sprzątania w konfiguracji serwera. Ustawienia i sekrety zostają na miejscu, o ile nie zaznaczono opcji usuwania danych. Po ponownej aktywacji ochrona wraca w tej samej postaci.

Czy ekran logowania pod nowym adresem trafi do wyszukiwarki?

Ekran logowania pod nowym adresem nie powinien trafić do wyszukiwarki, a Smart Protector wprost każe robotom go pominąć. Wysyła z nim nagłówek X-Robots-Tag z wartościami noindex i nofollow. Dokłada też nagłówki zakazujące przechowywania strony w pamięci podręcznej. Nowa ścieżka nie powinna więc trafić do indeksu, a sama strona nie zostaje w pamięci podręcznej.

Na tym ochrona formularza się nie kończy. Nagłówek X-Frame-Options blokuje osadzenie go w ramce, co chroni przed clickjackingiem. Referrer-Policy sprawia z kolei, że URL nie wycieka do innych domen po kliknięciu zewnętrznego linku. Te same nagłówki dostaje punkt kontroli, w którym wpisujesz kod 2FA.

Jak bezpiecznie przenieść ekran logowania w swojej witrynie?

Ekran logowania przeniesiesz bezpiecznie w ustawieniach „Smart Protector > Global settings”, w karcie „Login URL”. Wpisz własny slug, zostaw zalecaną odpowiedź 404 i wybierz reakcję na wejście gościa do /wp-admin. Po zapisie sprawdź, czy wtyczka nie zgłosiła kolizji z istniejącą treścią. Zapisz nowy adres w zakładkach, zanim zamkniesz sesję. Od tej chwili boty trafiają w pustkę, a Ty wchodzisz drzwiami, które znasz tylko Ty i Twój zespół.

Ukryty formularz to jedna z warstw ochrony, obok limitu prób i uwierzytelniania dwuskładnikowego. Wszystkie moduły opisuje strona wtyczki Smart Protector. Napisz do nas, a pomożemy wdrożyć zabezpieczenia bez ryzyka zablokowania się.

Chcesz, żeby Twoją stronę znajdowali klienci i modele AI?

Prowadzimy pozycjonowanie stron w Google i w odpowiedziach AI. Porządkujemy strukturę, linkowanie i treści, a efekty mierzymy zamiast obiecywać.