Login page

Change and hide your WordPress login page address

Login page replaces the default wp-login.php address with a custom path of your choosing. Until you explicitly set and save a new address in the settings, the module is a complete no-op — zero risk of accidentally locking yourself out of the dashboard.

Key features

  • A custom login page address (e.g. /login instead of /wp-login.php)
  • Direct requests to wp-login.php or /wp-admin without a valid session return 404, not a redirect — so they never reveal that a login page exists elsewhere
  • admin-ajax.php stays at its usual address, so front-end AJAX keeps working
  • Safe by default: until you manually set an address, the module changes nothing
  • Collision validation against existing pages or rewrite rules when saving

How it works

The module registers a custom rewrite rule mapping the chosen path to internal login form handling, and the `login_url`/`site_url` filters rewrite internal links (logout, lost password...) so WordPress never leaks the old path in its own HTML.

Direct access to `/wp-login.php` or `/wp-admin` without a valid session is deliberately handled as a `wp_die()` with a 404 header, not a redirect — a redirect would tell a visitor (or a bot) that a login page exists, just somewhere else.

Compared to alternatives

An alternative to WPS Hide Login — with the same "safely silent until you configure it" principle.

Frequently asked questions

Could I lock myself out of the dashboard?
The module is designed to prevent that — nothing changes until you explicitly save a new address, and collisions with existing pages are checked on save.
Does this break front-end AJAX?
No, admin-ajax.php stays at its standard address.
Why 404 instead of redirecting to the new address?
A redirect would reveal that a login page exists elsewhere — a 404 doesn’t give that away.