Guia de correção

Como Mudar a URL de Login do WordPress (/wp-login.php)

1 de maio de 2026 Atualizado em 1 de mai. de 2026

Abra o log de acesso de qualquer site WordPress que esteja online por mais de alguns dias e pesquise por wp-login.php. Você encontrará centenas, frequentemente milhares, de entradas de endereços IP que você nunca ouviu falar, todos tentando combinações comuns de nome de usuário e senha. O login do WordPress é um dos endpoints mais atacados na web pública, simplesmente porque a URL é universal. Cada site WordPress no mundo serve o formulário de login em /wp-login.php e /wp-admin. Isso torna trivialmente fácil para botnets atacarem em escala.

Mover a URL de login para algo personalizado não corrige o problema subjacente (alguém com interesse real no seu site específico encontrará a nova URL de qualquer maneira), mas remove o site de milhões de listas automatizadas que coletam e martelam o endpoint padrão. Na prática, isso reduz o tráfego de login em 95% ou mais, o que é uma vitória significativa só pela carga do servidor. Este guia explica o que a alteração realmente realiza, as várias maneiras de implementá-la e as armadilhas a evitar.

O que mudar a URL de login faz e o que não faz

Vale a pena ser preciso, porque o tópico é deturpado em ambas as direções. Alguns guias o vendem em excesso como uma defesa completa, outros o descartam como teatro de segurança. A posição precisa está entre as duas.

O que faz bem:

  • Para botnets automatizados que miram /wp-login.php diretamente. A grande maioria do tráfego de força bruta são scripts burros iterando por wordlists. Eles não procuram a nova URL porque isso requer uma visita real e análise de HTML.
  • Remove você das listas de filtro "WordPress login presente" que scanners constroem para encontrar alvos rapidamente.
  • Reduz drasticamente a carga do servidor e o ruído nos logs. Em sites movimentados isso sozinho é razão suficiente.
  • Reduz a visibilidade administrativa acidental. A página de login vaza apenas por existir: mensagens de erro, o favicon, o logo do WordPress, a versão do template de login. Ocultar a URL oculta tudo isso.

O que não faz:

  • Parar um invasor determinado que mira especificamente seu site. Eles encontrarão a nova URL através de qualquer um destes: o redirecionamento de login que acontece após o logout, o e-mail de redefinição de senha que linka para a nova URL, o caminho do cookie, um link vazado em seu CMS, ou apenas adivinhando slugs comuns.
  • Substituir senhas fortes ou autenticação de dois fatores. A URL de login é uma camada à frente da autenticação real. A defesa real ainda é o que está no formulário, não onde o formulário vive.
  • Proteger contra vulnerabilidades em nível de aplicação. Se um plugin tem um bug de execução remota de código, a URL de login é irrelevante.

O enquadramento pragmático: mudar a URL de login é uma alteração de alto retorno e baixo esforço que aborda uma classe específica de ataque (força bruta automatizada não direcionada). Combina bem com senhas fortes, 2FA e um limitador de taxa, mas não substitui nenhum deles.

A maneira recomendada: WPS Hide Login (ou equivalente)

Para 95% dos sites, a solução mais limpa é o plugin gratuito WPS Hide Login. É pequeno (menos de 100KB), tem sido mantido ativamente por anos, tem mais de um milhão de instalações ativas e faz exatamente uma coisa: muda o slug da URL de login. Sem upsells, sem painel de configurações cheio de recursos não relacionados.

A configuração leva um minuto:

  1. Instale WPS Hide Login do diretório de plugins.
  2. Ative-o.
  3. Vá para Configurações, WPS Hide Login.
  4. Insira seu novo slug no campo "Login URL". Exemplos: my-secret-login, backstage, access-2347. Evite escolhas óbvias como admin, secret, login, o nome do seu domínio com um número anexado, etc.
  5. Opcionalmente, defina uma "Redirection URL" para visitas ao /wp-login.php antigo. O comportamento padrão retorna um 404, que é o que você quer contra scanners. Um redirecionamento personalizado para a página inicial também é bom.
  6. Salve.

A partir desse ponto, https://seudominio.com/wp-login.php retorna um 404 para forasteiros, e você faz login via https://seudominio.com/my-secret-login em vez disso. Marque a nova URL nos favoritos imediatamente. O plugin não armazena o slug em nenhum lugar visível de fora, então se você esquecer a URL e não tem acesso FTP, você tem um problema (embora haja um caminho de recuperação descrito abaixo).

Alternativa: um slug personalizado sem um plugin

Se você prefere não adicionar outro plugin, pode implementar o mesmo efeito em código. Coloque isto em um must-use plugin em wp-content/mu-plugins/custom-login-url.php:

<?php
/**
 * Plugin Name: Custom Login URL
 * Description: Hides /wp-login.php behind a custom slug.
 */

if (!defined('ABSPATH')) {
    exit;
}

const CUSTOM_LOGIN_SLUG = 'my-secret-login';

add_action('init', function () {
    $requestUri = isset($_SERVER['REQUEST_URI']) ? (string) $_SERVER['REQUEST_URI'] : ';
    $path = parse_url($requestUri, PHP_URL_PATH) ?? ';
    $path = trim($path, '/');

    // Allow access via the custom slug by serving wp-login.php
    if ($path === CUSTOM_LOGIN_SLUG) {
        require_once ABSPATH . 'wp-login.php';
        exit;
    }

    // Block direct access to the default login URL
    if (preg_match('#(^|/)wp-login\.php$#', $path)) {
        status_header(404);
        nocache_headers();
        include get_404_template();
        exit;
    }
});

// Rewrite the URL in emails and login redirects
add_filter('site_url', function ($url, $path) {
    if (str_contains((string) $path, 'wp-login.php')) {
        return str_replace('wp-login.php', CUSTOM_LOGIN_SLUG, $url);
    }
    return $url;
}, 10, 2);

add_filter('wp_redirect', function ($location) {
    return str_replace('wp-login.php', CUSTOM_LOGIN_SLUG, $location);
});

A vantagem dessa abordagem é controle total e zero dependências de plugin. A desvantagem é que você tem que mantê-lo, e casos de borda (multisite, fluxos de registro personalizados, certos construtores de página que usam o formulário de login) precisam de tratamento extra. Para a maioria dos sites, WPS Hide Login é genuinamente a resposta mais prática.

Escolhendo um bom slug

O slug só precisa ser não óbvio, não criptograficamente secreto. Algumas regras gerais:

  • Evite variações comuns de "login", "admin" ou "wp". Scanners que vão além de /wp-login.php tipicamente têm uma lista: /login, /admin, /secure-login, /wp-secret, /backend, /dashboard. Escolha algo que não esteja nessa lista.
  • Escolha algo memorável para você, não aleatório. Um slug que você consegue digitar de memória está bem. my-cat-tofu é muito melhor que k7Hg2P porque o último você guardará em um gerenciador de senhas e o primeiro você não esquecerá.
  • Não inclua o domínio ou nome da empresa. example-login em example.com é a primeira coisa que um invasor direcionado tenta.
  • Letras minúsculas, sem caracteres especiais. URLs são tecnicamente sensíveis a maiúsculas, mas usuários reais erram a capitalização o tempo todo. Um slug em minúsculas evita toda essa classe de tickets "não consigo fazer login".

Armadilhas comuns e casos de borda

Algumas coisas quebram ou se comportam inesperadamente quando você move a URL de login. Vale a pena saber antecipadamente.

  • Página "Minha Conta" do WooCommerce. O login do cliente em /my-account/ é um fluxo separado e não é afetado pela alteração. Você só oculta o login admin. Os clientes do WooCommerce ainda fazem login normalmente.
  • Plugins de autenticação de dois fatores. A maioria dos principais plugins de 2FA (Wordfence, WP 2FA, miniOrange, etc.) funcionam bem com WPS Hide Login. Eles se conectam ao processo de login em uma camada abaixo da URL e não se importam onde o formulário vive. Teste uma vez após ativar.
  • REST API e XML RPC. A alteração de URL de login não afeta /wp-json/ ou /xmlrpc.php. Se você tem aplicações que se autenticam contra esses, elas continuam funcionando como antes. Se você não usa ativamente XML RPC, este é um bom momento para desabilitá-lo inteiramente (guia separado em nossa base de conhecimento).
  • Plugins de cache. Alguns caches de página agressivos (LiteSpeed Cache com edge caching, Cloudflare APO) podem cachear a nova URL de login ou, pior, cachear uma resposta de admin logado e servi-la a visitantes deslogados. Após a alteração, visite a nova URL em uma janela privada. Se você vir uma visualização de admin logado, o cache está quebrado; limpe-o e adicione o slug à lista de exclusão de cache.
  • E-mails de redefinição de senha. Tanto WPS Hide Login quanto o trecho de código acima reescrevem a URL de redefinição de senha automaticamente, mas plugins de e-mail personalizados ou integrações de e-mail transacional às vezes codificam wp-login.php em seus templates. Envie um teste de redefinição de senha para si mesmo após a alteração.
  • Instalações em subdiretório e multisite. Ambas funcionam, mas cuidado com o slug sendo anexado à URL base errada. Se o WordPress está em /blog/, a nova URL é https://seudominio.com/blog/my-secret-login, não https://seudominio.com/my-secret-login.

Recuperação: o que fazer se você se trancar para fora

Isso acontece. Você configura o slug, faz logout, fecha a aba, e uma semana depois não consegue lembrar se usou hifens, sublinhados ou qual era a terceira palavra. Você não está preso, mas o caminho de recuperação depende do método que você usou.

Se você usou WPS Hide Login: desative o plugin via SFTP. Renomeie a pasta wp-content/plugins/wps-hide-login para wps-hide-login.disabled, ou exclua-a inteiramente. A URL padrão /wp-login.php volta imediatamente. Faça login, procure seu slug nas configurações do plugin, depois ative o plugin novamente. Ou, alternativamente, olhe diretamente no banco de dados do WordPress: o slug está armazenado na tabela wp_options sob a chave whl_page.

Se você usou o código personalizado: SFTP em wp-content/mu-plugins/, abra o arquivo, leia o slug da constante CUSTOM_LOGIN_SLUG. Ou renomeie temporariamente o arquivo para desabilitá-lo, faça login, depois recoloque.

Em ambos os casos, anote a URL em algum lugar persistente no momento em que configurar. Gerenciador de senhas, documentação do projeto, qualquer coisa que sobreviva à perda de um marcador do navegador.

Como verificar que a alteração está ativa

  1. Abra https://seudominio.com/wp-login.php em uma janela privada do navegador. Resultado esperado: uma página 404.
  2. Mesma verificação para https://seudominio.com/wp-admin/. Também deve redirecionar para o 404, não para o formulário de login.
  3. Abra a nova URL https://seudominio.com/my-secret-login. Deve mostrar o formulário de login padrão do WordPress.
  4. Faça login normalmente, faça logout, clique no link "Sair". O redirecionamento deve cair na nova URL, não em /wp-login.php.
  5. Dispare uma redefinição de senha para si mesmo. O link do e-mail deve apontar para a nova URL.
  6. Execute uma nova varredura do InspectWP. Verificações relacionadas à URL de login devem refletir o novo estado.

Uma vez verificado, a única manutenção contínua é garantir que o plugin (ou seu código personalizado) continue funcionando através de atualizações do núcleo do WordPress, o que deve. Se uma grande atualização alguma vez mudar como o fluxo de login funciona internamente, WPS Hide Login é um dos primeiros plugins a entregar um patch, geralmente em dias.

Toda a alteração é meia hora de trabalho para uma redução permanente na superfície de ataque e uma queda perceptível na carga do servidor. Não há boa razão para deixar o login do WordPress em sua localização padrão em qualquer site de produção.

Verifique seu site WordPress agora

O InspectWP analisa seu site WordPress em busca de problemas de segurança, problemas de SEO, conformidade com GDPR e desempenho — gratuitamente.

Analise seu site grátis