Como corrigir permalinks retornando 404
O que é os permalinks retornando 404?
O WordPress usa URLs amigáveis, como /meu-post/, em vez do formato com ?p=123. Para isso funcionar, o servidor precisa reescrever a URL e entregar a requisição ao WordPress, usando as regras de reescrita que ficam no .htaccess no Apache ou na configuração do Nginx. Quando essas regras somem ou ficam inválidas, o servidor procura um arquivo ou pasta com aquele nome, não encontra e responde 404. A home funciona porque aponta para a raiz, que existe; as demais URLs dependem da reescrita.
Como identificar
- Mensagem “404 Not Found” ao abrir qualquer post ou página interna, enquanto a home abre normal.
- Em sites em português, a página de erro “Nada encontrado” ou “Página não encontrada” nos posts.
- O problema surgiu após migrar de servidor, mudar de hospedagem ou editar o .htaccess.
- Trocar a estrutura de links permanentes em Configurações > Links permanentes não resolve sozinho.
Como prevenir
- Depois de migrar o site, abra Configurações > Links permanentes e salve para recriar o .htaccess no novo servidor
- Mantenha o .htaccess com permissão 644 para o WordPress poder regravar as regras quando precisar
- Em servidores Nginx, documente a diretiva try_files para reaplicá-la em qualquer nova instalação
Causa
- Regras de reescrita do WordPress perdidas após migração, restauração de backup ou troca de servidor.
- Arquivo .htaccess ausente, vazio ou sem o bloco de reescrita que o WordPress precisa no Apache.
- Módulo mod_rewrite do Apache desativado no servidor, impedindo a reescrita das URLs amigáveis.
- Configuração do Nginx sem a diretiva try_files que encaminha a URL para o index.php.
- Permissão de escrita negada no .htaccess, impedindo o WordPress de regravar as regras sozinho.
Como resolver
- Regrave os permalinks pelo painel: se você acessa o wp-admin, vá em Configurações > Links permanentes e clique em Salvar alterações sem mudar nada. Isso força o WordPress a recriar as regras de reescrita.
- Confira o .htaccess: via FTP, abra o .htaccess na raiz do site. Ele precisa conter o bloco padrão do WordPress entre BEGIN WordPress e END WordPress. Se estiver ausente ou vazio, recrie esse bloco.
- Restaure o bloco padrão: cole o bloco de reescrita padrão do WordPress no .htaccess e salve. Recarregue um post interno para ver se o 404 sumiu.
- Verifique a permissão do .htaccess: garanta que o .htaccess tenha permissão 644, para o servidor ler e o WordPress conseguir regravá-lo quando você salva os permalinks.
- No Nginx, ajuste o try_files: se o site roda em Nginx, o .htaccess é ignorado. Peça à hospedagem para incluir a diretiva que encaminha as URLs ao index.php do WordPress no bloco do servidor.
# .htaccess na raiz do site — bloco padrao de reescrita do WordPress.
# Substitui ou recria as regras quando os permalinks retornam 404.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress














