Orbit
Omleidingen en Herschrijvingen Configureren
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 heeft een ingebouwde engine voor doorsturen en herschrijven die wordt uitgevoerd voordat uw project om iets wordt gevraagd. Deze kan worden geconfigureerd in KPanel of als een bestand in uw opslagplaats. Deze handleiding behandelt beide methodes, de patroon syntaxis en de captures, hoe regels worden geordend, de limieten en het gedrag dat mensen voor problemen kan stellen.
Waar regels configureren
Er zijn twee locaties, en deze worden in een vaste volgorde geëvalueerd.
- In KPanel. Open uw project in Orbit, ga naar Settings en scroll naar de sectie redirects and rewrites voor de omgeving. Elke omgeving heeft zijn eigen onafhankelijke set regels, dus production en staging worden apart geconfigureerd.
- In uw opslagplaats, als een
kaps.jsonbestand. Dit wordt verder hieronder behandeld.
Panel-regels worden eerst geëvalueerd. Als geen van deze overeenkomt, worden de kaps.json regels geprobeerd.

Een regel toevoegen in KPanel
- Klik op Add rule.
- Vul het source in, het padpatroon om inkomende verzoeken tegen af te stemmen. De placeholder toont de twee vormen die het verwacht:
/old-path or /blog/:slug. - Vul het destination in. De placeholder toont
/new-path or https://..., dus zowel een lokaal pad als een volledige externe URL zijn geldig. - Kies het regeltype:
- 301 Permanent: de URL is permanent verplaatst. Browsers en zoekmachines cachen dit.
- 302 Temporary: voor nu verplaatst, niet gecached. Gebruik voor campagnes en experimenten.
- Rewrite: serveer het doelpad zonder de URL in de adresbalk van de browser te veranderen.
- Klik op Save rules.
Regels worden van kracht na de volgende implementatie, niet onmiddellijk. Het opslaan van een regel verandert niet wat de momenteel live geïmplementeerde versie serveert. Implementeer opnieuw na het opslaan, anders zullen uw regels niet lijken te werken.
Een 301 wordt door browsers gecached, soms zeer lang, en er is niets wat u vanaf de server kunt doen om het te verwijderen. Als u niet zeker bent dat een verplaatsing permanent is, gebruikt u eerst een 302 en schakelt u over naar 301 wanneer u het zeker weet. Dit verkeerd doen op een drukke route is echt moeilijk om terug te draaien.
Bronpadpatronen
| Patroon | Komt overeen met | Captures |
|---|---|---|
/old-page | Precies /old-page | Niets |
/blog/* | Alles wat begint met /blog/ | De rest van het pad, waarnaar wordt verwezen als * in de bestemming |
/posts/:id | /posts/ plus een padsegment | Dat segment, als :id |
/files/:rest* | /files/ plus alles erna, schuine strepen inbegrepen | De hele rest, als :rest |
Het verschil tussen :id en :rest* is het belangrijke. Een benoemde parameter komt overeen met een enkel segment en stopt bij de volgende schuine streep. Een splat komt overeen met alles wat overblijft, inclusief schuine strepen.
Captures in de bestemming gebruiken
Verwijs naar een benoemde parameter op naam en naar een kale wildcard als *:
| Bron | Bestemming | Resultaat |
|---|---|---|
/blog/:slug | /articles/:slug | /blog/hello-world wordt /articles/hello-world |
/docs/:rest* | /help/:rest* | /docs/a/b/c wordt /help/a/b/c |
/old/* | /new/* | /old/a/b wordt /new/a/b |
Regelvolgorde
Regels worden van boven naar beneden getest en de eerste overeenkomst wint. Zodra een regel overeenkomt, wordt geen latere regel in aanmerking genomen. Het panel zegt dit onder de lijst: "Rules are tested in order. First match wins."
Plaats de specifieke regels boven de algemene regels. Een /blog/* regel boven /blog/2023/:slug zal elk verzoek opslokken dat de meer specifieke regel moest afhandelen, en het zal eruit zien alsof de specifieke regel simpelweg niet werkt.
Als geen regel overeenkomt, wordt het verzoek normaal geserveerd.
Veel voorkomende use cases
Een pagina hernoemen
U hebt /about-us hernoemd naar /about en wilt dat oude koppelingen blijven werken.
- Bron:
/about-us - Bestemming:
/about - Type: 301 Permanent
Een hele sectie verplaatsen
Uw blog is verplaatst van /news/:slug naar /blog/:slug.
- Bron:
/news/:slug - Bestemming:
/blog/:slug - Type: 301 Permanent
Een API-pad stilzwijgend doorsturen
U wilt /api/v1/* geserveerd van een ander intern pad zonder de wijziging bloot te stellen.
- Bron:
/api/v1/:path* - Bestemming:
/api/internal/:path* - Type: Rewrite
Een tijdelijke verhoudingspagina
- Bron:
/checkout - Bestemming:
/maintenance - Type: 302 Temporary
Verkeer naar een ander domein sturen
De bestemming kan een absolute URL zijn, dus een regel kan naar een volledig ander domein verwijzen.
- Bron:
/shop/:rest* - Bestemming:
https://shop.example.com/:rest* - Type: 301 Permanent
Configuratie als code met kaps.json
Regels kunnen in uw opslagplaats staan in plaats van in het paneel. Voeg een kaps.json bestand toe en zorg ervoor dat uw build deze in uw output directory kopieert, omdat Orbit dit uit de wortel van het gebouwde artefact leest, niet uit de opslagplaats wortel.
{
"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 produceert een 301 en permanent: false een 302. Weglaten geeft een 301.
kaps.json is alleen van toepassing op statische implementaties. Als Server mode aan staat, behandelt uw app zijn eigen routing en wordt het bestand genegeerd. Het wordt ook alleen geëvalueerd nadat de panel-regels van de omgeving niet hebben overeengestemd, dus een panel-regel wint altijd van een bestandsregel voor hetzelfde pad.
Gebruik kaps.json wanneer de regels bij de code horen, zodat zij in een pull request worden beoordeeld en met een terugdraai meegaan. Gebruik het paneel wanneer u een regel onmiddellijk live nodig heeft zonder implementatie. Onderhoud dezelfde regel niet op beide plaatsen: de panel-regel zal altijd winnen en de bestandsregel zal lijken te worden genegeerd, wat ook het geval is.
Limieten
- Tot 100 doorstuur- en herschrijvingsregels per omgeving, en 100 in een
kaps.json. - Tot 200 aangepaste headerregels per omgeving.
Regels boven de limiet worden stilzwijgend verwijderd en niet genegeerd, dus blijf er goed onder.
Aangepaste antwoordheaders
Naast doorsturen heeft elke omgeving een antwoordheaders sectie in Settings voor het injecteren van HTTP-headers op overeenkomende paden. Het gebruikt dezelfde padpatroon syntaxis, en er zijn sneltoevoeging voorinstellingen voor HSTS, CSP, no-embed, no-sniff, referrer policy en CORS.
In tegenstelling tot doorsturen worden alle overeenkomende headerregels toegepast, niet alleen de eerste, en een latere regel overschrijft een eerdere regel wanneer zij dezelfde header instellen. Content-Length, Transfer-Encoding en Connection zijn geblokkeerd, omdat het instellen ervan de respons zou beschadigen.
Gedrag dat het waard is te kennen voordat je het gebruikt
Query strings worden niet meegevoerd in een doorstuur. Een regel komt overeen of er al dan niet een querystring in het verzoek zit, maar de bestemming wordt opgebouwd uit uw sjabloon en de vastgelegde padsegmenten. Een verzoek aan /old?utm_source=email wordt doorgestuurd naar /new, met de parameters verwijderd. Als u ervan afhangt dat trackingparameters behouden blijven, behandelt u de doorstuur in plaats daarvan in een edge function, waar u de doel-URL volledig controleert.
- Regels komen alleen overeen met het pad. Fragmenten (
#section) bereiken de server helemaal niet, de browser voegt ze na een doorstuur opnieuw in. - Een herschrijving naar een pad dat niet bestaat, levert een 404 op, in plaats van stilzwijgend terug te vallen op het originele pad. Herschrijfdoelen moeten in uw build-uitvoer bestaan.
- Regels worden uitgevoerd voordat uw project om iets wordt gevraagd, dus zij zijn van toepassing op statische bestanden en op server-modeverzoeken.
- Elke omgeving is onafhankelijk. Regels op production zijn niet van toepassing op staging of previews. Kopieer ze opzettelijk.
Een regel verwijderen
Klik op het prullenbak pictogram in de regelrij, klik vervolgens op Save rules om de wijziging toe te passen. Net als bij het toevoegen van een regel wordt de wijziging van kracht na de volgende implementatie.
Wanneer u in plaats daarvan een edge function moet gebruiken
De doorstuurengine behandelt pad-naar-pad regels. Gebruik een edge function wanneer u logica nodig hebt die de regelmotor niet kan uitdrukken: vertakking op basis van een header of cookie, het behouden of herschrijven van queryparameters, gewogen A/B routing, of iets voorwaardelijks.