Como corrigir permalink quebrado após migração para HTTPS
O que é o permalink quebrado após migração para HTTPS?
Permalink e a URL permanente de cada conteúdo do WordPress. Após migrar o site de http para https, o permalink quebra quando o WordPress ainda conhece o endereco antigo: o banco guarda a URL em http, o .htaccess perdeu as regras de reescrita ou ha um redirecionamento que entra em loop. O conteúdo existe, mas as URLs internas apontam para o protocolo errado ou não resolvem.
Como identificar
- As páginas internas retornam 404, embora a home abra normalmente em https.
- O navegador mostra “ERR_TOO_MANY_REDIRECTS” por um loop entre http e https.
- Links e recursos no conteúdo ainda apontam para http, gerando aviso de conteúdo misto.
- O cadeado de segurança não aparece porque parte da página carrega via http antigo.
Antes de começar: Faca backup do banco e do .htaccess antes de editar: o search-replace altera milhares de linhas e e irreversivel sem copia. Remova as linhas WP_HOME/WP_SITEURL do wp-config.php depois que a URL https definitiva estiver gravada no banco.
Como prevenir
- Faca o search-replace de http para https no banco como parte do processo de migração para SSL
- Mantenha uma única fonte de redirect http para https (so o .htaccess ou so um plugin), nunca as duas
- Após qualquer migração, re-salve os links permanentes para reescrever as regras do .htaccess no novo ambiente
Causa
- URL antiga em http (siteurl/home e links no conteúdo) ainda gravada no banco de dados.
- .htaccess sem as regras de reescrita do WordPress após a migração, retornando 404 nas URLs internas.
- Redirecionamento http para https mal configurado (no .htaccess ou plugin) criando loop infinito.
- Plugin de SSL forcando https em conflito com um redirect já existente no servidor.
- Estrutura de links permanentes não re-salva no novo ambiente, deixando as regras de URL desatualizadas.
Como resolver
- Re-salve os links permanentes: em Configurações > Links permanentes, clique em Salvar sem mudar nada para reescrever o .htaccess com as regras de reescrita. Resolve a maioria dos 404 após migração.
- Atualize a URL para https: em Configurações > Geral, deixe a URL do WordPress e do site identicas em https. Se não consegue entrar, force com WP_HOME e WP_SITEURL no wp-config.php.
- Faca o search-replace de http para https: troque http por https em todo o banco preservando serializados, com WP-CLI search-replace ou Better Search Replace, para corrigir links internos e conteúdo misto.
- Revise o redirecionamento: garanta uma única regra de http para https no .htaccess e remova redirects duplicados de plugins de SSL para acabar com o loop ERR_TOO_MANY_REDIRECTS.
- Limpe o cache: limpe o cache do plugin de cache e do CDN para servir as URLs https corrigidas e não a versão antiga em http.
APACHE
# .htaccess - regras padrao do WordPress + redirect unico de http para https
# Coloque o redirect ANTES do bloco do WordPress para evitar loop
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Perguntas frequentes
Por que as páginas internas dao 404 e a home não?
Porque a home usa a URL raiz, que funciona, mas as páginas internas dependem das regras de reescrita do .htaccess para traduzir o permalink. Após a migração, essas regras somem ou ficam desatualizadas. Re-salve os links permanentes para reescreve-las e corrigir os 404.
O site entra em loop de redirecionamento. Por que?
Quase sempre por dois redirects de http para https ao mesmo tempo: um no .htaccess e outro num plugin de SSL, ou uma configuração de proxy. Eles se reenviam mutuamente. Mantenha uma única regra de redirect e remova a duplicada para acabar com o loop.
Os links ainda aparecem em http. Como corrigir?
Porque o banco ainda guarda as URLs em http no conteúdo. Rode um search-replace de http://seudominio para https://seudominio com WP-CLI ou Better Search Replace, que tratam dados serializados, e os links internos passam a usar https, eliminando o conteúdo misto.
Posso trocar http por https com UPDATE de SQL?
Não e seguro. Muitos dados são serializados e o https tem um caractere a mais que o http, mudando o tamanho da string. Um UPDATE cru quebra a serialização. Use WP-CLI search-replace ou Better Search Replace, que recalculam o tamanho automaticamente.
Re-salvar os links permanentes apaga alguma configuração?
Não. Salvar em Configurações > Links permanentes apenas reescreve as regras de reescrita no .htaccess; não altera conteúdo nem ajustes. E a primeira e mais segura correção para 404 em páginas internas após migrar o site para um novo servidor ou para HTTPS.
O cadeado de segurança não aparece mesmo em https. Por que?
Porque a página carrega algum recurso (imagem, script, CSS) ainda via http, o chamado conteúdo misto. O navegador entao não exibe o cadeado pleno. Faca o search-replace de http para https no banco para que todos os recursos passem a carregar de forma segura.














