Redirecionamentos e slugs
Como a loja redireciona URLs antigas para as novas, evita cadeias e ciclos, e o mapa das rotas de redirecionamento e de slug por idioma.
Quando uma URL muda (um produto é renomeado, a loja migra de plataforma, uma categoria é reorganizada), os links antigos que estão em buscadores, e-mails e favoritos precisam continuar funcionando. Um redirecionamento diz à vitrine: "quem pedir /caminho-antigo vai para /caminho-novo". Esta seção documenta o cadastro desses redirecionamentos, a importação em lote e o ajuste do slug (o trecho legível da URL) por idioma. As rotas de redirecionamento exigem token de administrador e o módulo SEO ativo na loja; a de slug por idioma exige o privilégio manage_categories.
Como funciona
- Cadastre o redirecionamento
POST /api/v1/admin/seo/redirectscomold_pathenew_path. - A vitrine aplicaAo resolver um caminho, a vitrine procura um redirecionamento ativo para aquele texto exato e responde 301 ou 302 com o destino.
- Acompanhe o usoNa listagem,
hitselast_hit_atmostram se o redirecionamento ainda é usado e podem orientar uma limpeza.
Conceitos-chave
Formato dos caminhos
| Campo | Regra |
|---|---|
old_path | Começa com /. A comparação é exata, texto por texto, incluindo a barra final e maiúsculas. |
new_path | Começa com / (caminho da própria loja) ou com http:// ou https:// (outro site). Não pode ser igual a old_path. |
Cadeias e ciclos
Ao gravar, a plataforma segue os redirecionamentos ativos a partir do new_path. Se chegar de volta ao old_path, ou repetir um destino, recusa com REDIRECT_LOOP. Se passar de 5 saltos, recusa com REDIRECT_CHAIN_TOO_DEEP. Se terminar em um destino final, grava esse destino. Ao gravar, também reaponta os redirecionamentos que já apontavam para o old_path, para pularem o salto.
Slug por idioma
Em lojas com vários idiomas, cada produto, categoria, página, post de blog e marca pode ter um slug diferente por idioma. A rota de slug por idioma valida o novo texto e guarda o anterior para redirecionar.
Endpoints
| Método | Caminho | Para que serve | Auth |
|---|---|---|---|
| GET | /api/v1/admin/seo/redirects | Listar redirecionamentos | admin |
| POST | /api/v1/admin/seo/redirects | Criar redirecionamento | admin |
| GET | /api/v1/admin/seo/redirects/{id} | Consultar redirecionamento | admin |
| PUT | /api/v1/admin/seo/redirects/{id} | Alterar redirecionamento | admin |
| DELETE | /api/v1/admin/seo/redirects/{id} | Excluir redirecionamento | admin |
| POST | /api/v1/admin/seo/redirects/bulk | Importar ou alterar em lote | admin |
| PUT | /api/v1/admin/seo/localized-slug/{id} | Definir slug por idioma | admin |
Erros comuns
old_pathsem a barra inicial. Retorna 400old_path must start with /.new_pathsem/,http://ouhttps://. Retorna 400.- Redirecionar um caminho para ele mesmo. Retorna 400
old_path and new_path cannot be identical. - Criar um ciclo (
/apara/be/bpara/a). Retorna 400 comREDIRECT_LOOP. - Achar que o
POSTfalha quando oold_pathjá existe. Ele atualiza o existente e devolve 201. - Esperar 404 ao consultar um id que não é UUID. Retorna 500.
- Importar CSV grande e ter um erro no meio. A importação em lote é transacional: uma linha inválida cancela o lote inteiro.