Orbit
Configurar Redirecionamentos e Reescritas
Orbit has a built-in redirect and rewrite engine that runs before your project is asked for anything, configured either in KPanel or as a file in your repository. This guide covers both, the pattern…
Orbit tem um motor integrado de redirecionamento e reescrita que é executado antes de qualquer pedido ao seu projeto, configurado no KPanel ou como um ficheiro no seu repositório. Este guia cobre ambos, a sintaxe de padrões e as suas capturas, como as regras são ordenadas, os limites e o comportamento que apanha as pessoas de surpresa.
Onde Configurar Regras
Existem dois locais, e são avaliados numa ordem fixa.
- No KPanel. Abra o seu projeto em Orbit, vá a Settings, e desloque-se até à secção redirects and rewrites do ambiente. Cada ambiente tem o seu próprio conjunto independente de regras, pelo que produção e staging são configurados separadamente.
- No seu repositório, como um ficheiro
kaps.json. Isto é abordado mais adiante.
As regras do painel são avaliadas primeiro. Se nenhuma delas corresponder, as regras kaps.json são testadas.

Adicionar uma Regra no KPanel
- Clique em Add rule.
- Preencha a source, o padrão de caminho para corresponder contra pedidos recebidos. O marcador de posição mostra as duas formas que espera:
/old-path or /blog/:slug. - Preencha o destination. O marcador de posição mostra
/new-path or https://..., portanto tanto um caminho local como um URL externo completo são válidos. - Escolha o tipo de regra:
- 301 Permanent: o URL deslocou-se permanentemente. Os navegadores e motores de busca colocam isto em cache.
- 302 Temporary: deslocado por agora, não colocado em cache. Utilize para campanhas e experimentos.
- Rewrite: serve o caminho de destino sem alterar o URL na barra de endereços do navegador.
- Clique em Save rules.
As regras entram em vigor na próxima implementação, não imediatamente. Guardar uma regra não altera o que a implementação atualmente ativa serve. Reimplemente após guardar, ou as suas regras parecerão não funcionar.
Um 301 é colocado em cache pelos navegadores, às vezes durante muito tempo, e não há nada que possa fazer a partir do servidor para limpá-lo. Se não tem a certeza de que uma deslocação é permanente, utilize primeiro um 302 e mude-o para 301 uma vez que tem a certeza. Fazer isto incorretamente num caminho de tráfego elevado é genuinamente difícil de reverter.
Padrões de Caminho de Origem
| Padrão | Corresponde a | Capturas |
|---|---|---|
/old-page | Exatamente /old-page | Nada |
/blog/* | Qualquer coisa que comece com /blog/ | O resto do caminho, referenciado como * no destino |
/posts/:id | /posts/ mais um segmento de caminho | Esse segmento, como :id |
/files/:rest* | /files/ mais tudo depois, barras incluídas | O resto completo, como :rest |
A diferença entre :id e :rest* é a importante. Um parâmetro nomeado corresponde a um segmento único e para na barra seguinte. Um splat corresponde a tudo o que resta, incluindo barras.
Utilizar Capturas no Destino
Referencie um parâmetro nomeado pelo nome, e um wildcard simples como *:
| Origem | Destino | Resultado |
|---|---|---|
/blog/:slug | /articles/:slug | /blog/hello-world torna-se /articles/hello-world |
/docs/:rest* | /help/:rest* | /docs/a/b/c torna-se /help/a/b/c |
/old/* | /new/* | /old/a/b torna-se /new/a/b |
Ordem das Regras
As regras são testadas de cima para baixo da lista e a primeira correspondência vence. Uma vez que uma regra corresponde, nenhuma regra posterior é considerada. O painel diz isto sob a lista: "Rules are tested in order. First match wins."
Coloque as regras específicas acima das gerais. Uma regra /blog/* colocada acima de /blog/2023/:slug irá absorver todos os pedidos que a regra mais específica se destinava a processar, e parecerá que a regra específica está simplesmente quebrada.
Se nenhuma regra corresponder, o pedido é servido normalmente.
Casos de Uso Comuns
Renomear uma Página
Renomeou /about-us para /about e deseja que as ligações antigas continuem a funcionar.
- Origem:
/about-us - Destino:
/about - Tipo: 301 Permanent
Deslocar uma Secção Inteira
O seu blogue deslocou-se de /news/:slug para /blog/:slug.
- Origem:
/news/:slug - Destino:
/blog/:slug - Tipo: 301 Permanent
Fazer Proxy de um Caminho de API Silenciosamente
Deseja que /api/v1/* seja servido a partir de um caminho interno diferente sem expor a alteração.
- Origem:
/api/v1/:path* - Destino:
/api/internal/:path* - Tipo: Rewrite
Uma Página de Espera Temporária
- Origem:
/checkout - Destino:
/maintenance - Tipo: 302 Temporary
Enviar Tráfego Para Outro Domínio
O destino pode ser um URL absoluto, portanto uma regra pode apontar para um site completamente diferente.
- Origem:
/shop/:rest* - Destino:
https://shop.example.com/:rest* - Tipo: 301 Permanent
Configuração Como Código Com kaps.json
As regras podem viver no seu repositório em vez do painel. Adicione um ficheiro kaps.json, e certifique-se de que a sua compilação o copia para o seu output directory, porque Orbit lê-o a partir da raiz do artefato construído em vez da raiz do repositório.
{
"redirects": [
{ "source": "/about-us", "destination": "/about", "permanent": true },
{ "source": "/news/:slug", "destination": "/blog/:slug", "permanent": true },
{ "source": "/promo", "destination": "/spring-sale", "permanent": false }
],
"rewrites": [
{ "source": "/api/v1/:path*", "destination": "/api/internal/:path*" }
],
"headers": [
{
"source": "/*",
"headers": [
{ "key": "X-Frame-Options", "value": "DENY" },
{ "key": "X-Content-Type-Options", "value": "nosniff" }
]
}
]
}
permanent: true produz um 301 e permanent: false um 302. Omiti-lo dá um 301.
kaps.json aplica-se apenas a implementações estáticas. Se Server mode está ativado, a sua aplicação lida com o seu próprio encaminhamento e o ficheiro é ignorado. É também avaliado apenas após as regras do painel do ambiente falharem em corresponder, portanto uma regra do painel sempre vence uma regra de ficheiro para o mesmo caminho.
Utilize kaps.json quando as regras pertencem ao código, portanto são revistas numa pull request e deslocam-se com um rollback. Utilize o painel quando precisa de uma regra ativa agora sem uma implementação. Não mantenha a mesma regra em ambos os locais: a regra do painel sempre vencerá e a regra do ficheiro parecerá estar sendo ignorada, que é o que está a acontecer.
Limites
- Até 100 regras de redirecionamento e reescrita por ambiente, e 100 num
kaps.json. - Até 200 regras de cabeçalhos personalizados por ambiente.
As regras para além do limite são descartadas silenciosamente em vez de gerar um erro, portanto mantenha-se bem abaixo.
Cabeçalhos de Resposta Personalizados
Juntamente com redirecionamentos, cada ambiente tem uma secção de cabeçalhos de resposta em Settings para injetar cabeçalhos HTTP em caminhos correspondentes. Utiliza a mesma sintaxe de padrão de caminho, e há predefinições de adição rápida para HSTS, CSP, no-embed, no-sniff, política de referrer e CORS.
Ao contrário dos redirecionamentos, todas as regras de cabeçalho correspondentes são aplicadas, não apenas a primeira, e uma regra posterior substitui uma anterior quando definem o mesmo cabeçalho. Content-Length, Transfer-Encoding e Connection são bloqueados, porque defini-los corromperia a resposta.
Comportamento Digno de Conhecer Antes de Depender Dele
As strings de consulta não são transportadas através de um redirecionamento. Uma regra corresponde quer o pedido tenha uma string de consulta ou não, mas o destino é construído apenas a partir do seu modelo e dos segmentos de caminho capturados. Um pedido para /old?utm_source=email redireciona para /new, com os parâmetros descartados. Se depende de parâmetros de rastreamento sobreviverem, processe o redirecionamento numa função de borda em vez disso, onde controla completamente o URL de destino.
- As regras correspondem apenas ao caminho. Fragmentos (
#section) nunca chegam ao servidor; o navegador reanexa-os após um redirecionamento. - Um rewrite para um caminho que não existe produz um 404, em vez de cair silenciosamente para o caminho original. Os destinos de rewrite devem existir no seu resultado de compilação.
- As regras são executadas antes de qualquer coisa ser pedida ao seu projeto, portanto aplicam-se a ficheiros estáticos e a pedidos de modo de servidor igualmente.
- Cada ambiente é independente. As regras na produção não se aplicam a staging ou pré-visualizações. Copie-as deliberadamente.
Apagar uma Regra
Clique no ícone de lixeira na linha de regra, depois clique em Save rules para aplicar a alteração. Como com adicionar uma, a alteração entra em vigor na próxima implementação.
Quando Utilizar uma Função de Borda Em Vez Disso
O motor de redirecionamento processa regras de caminho para caminho. Recorra a uma função de borda quando precisa de lógica que o motor de regras não pode expressar: ramificação num cabeçalho ou cookie, preservação ou reescrita de parâmetros de consulta, encaminhamento A/B ponderado, ou qualquer coisa condicional.