The rules a request meets.
"redirects/headers" is one line on Static Pro, the featured static plan. This page is the rest of it: the URL rules, what the cache holds and for how long, which response headers you get, and what it costs to change one.
What a request meets, in order
Six checks, every time — before anything is fetched fresh. See Platform for where each one actually runs.
- 1
The secure address, always
A plain http:// address is sent straight to the https:// one, at the edge, before anything else happens.
- 2
Which host answers
The apex address and the www one are both live and both covered by the certificate — see the apex/www row below for what that does and doesn't mean.
- 3
The URL rules
Redirects, trailing slashes, a missing page, a page taken down on purpose — checked in the order they're listed below.
- 4
The cache lookup
Checked before anything is fetched fresh, so most requests never reach storage or an instance at all.
- 5
The origin fetch
Only on a genuine cache miss — from durable storage for a static site, or from your own instance for anything dynamic. Full path on Platform.
- 6
The response headers
Added to whatever comes back, before it leaves — the same set on every response, plus anything you've asked us to add.
URL rules
What each rule does, who sets it up, and what it costs. Moving a whole site? See Migrations for the cutover the redirect map row below is built to survive.
| Rule | What it does | Who | Cost |
|---|---|---|---|
| Permanent redirect (301) | Tells a browser and a search engine that a page has moved for good. Both update where they point. Use this when the old address is never coming back. | CustomHosted | A single rule is an ops request — included, no charge. |
| Temporary redirect (302) | Sends a visitor somewhere else for now. It doesn't tell a search engine to forget the original address. Use this for a sale page, a maintenance detour, or anything you plan to undo. | CustomHosted | A single rule is an ops request — included, no charge. |
| Redirect map for retired URLs | Points a batch of old addresses at their new ones after a move. Without it, pages a search engine already ranked start returning nothing. | CodeHerder | Briefed as application routing — the Agentic iteration — CodeHerder add-on. |
| Apex vs www | Both the bare domain and the www one are served and both sit on the certificate. Neither forwards to the other on its own — you pick which one is canonical. | CustomHosted | Setting up the one redirect that enforces your pick is an ops request — included, no charge. |
| Trailing slash & directory URLs | /about and /about/ load the same page. A rule at the edge matches this to the way this site's own pages are actually built. | CustomHosted | On by default, for every route, at no charge. |
| A real 404 | A page that genuinely doesn't exist returns your own not-found page, with a real 404 status code attached — not a blank error document from somewhere else. | CustomHosted | On by default, for every route, at no charge. |
| Gone for good (410) | Marks a page as deliberately, permanently removed rather than just missing. It's the honest answer when there's no replacement to redirect to. | CustomHosted | A single rule is an ops request — included, no charge. |
| SPA deep-link fallback | For an app that does its own routing in the browser, this makes a direct link to one of its inner pages load the app instead of a 404. It's checked against your app's own routes, not guessed at. | CodeHerder | Briefed against your app — the Agentic iteration — CodeHerder add-on. |
| Maintenance page | Swaps in a "we'll be back" page for the length of a planned change, then swaps the real site back. | CustomHosted | An ops request for the window you need — included, no charge. |
What the cache holds, and for how long
Three classes, not one number — a hashed filename never needs a lifetime, and a page is cleared on every deploy rather than left to expire.
Files whose name changes with their content
Your stylesheets and scripts get the content written into their filename. A changed file gets a new address instead of overwriting the old one, so holding onto a copy of it anywhere is always safe.
Pages
Held at the edge too, but every deploy clears the whole cache before it finishes. A change is visible right away — nobody has to wait for an old copy to expire on its own.
Anything an app computes per request
Not held by us at all. On a dedicated instance, your app decides what — if anything — it caches.
A browser's own cache, and any network in between, are separate from ours — see the honest limits below for what that means in practice.
The headers you get, and the one you choose
On a static site these are edge configuration, set up on request. On a dedicated instance, your app or its own reverse proxy sets its own — we help set that up rather than guessing at it from outside.
On by default, on every response:
Strict-Transport-Security
Tells a browser to skip the plain http:// address on every visit for a year. It doesn't need to trust that address again, or wait for a redirect first.
X-Content-Type-Options
Stops a browser guessing a file's type from its content. It has to trust what the server actually said the file was, which closes off one class of trick that relies on the guess.
X-Frame-Options
Stops another site from loading your page inside a frame of its own. It's the standard defence against your page being silently reused as someone else's.
Referrer-Policy
Limits how much of a page's own address gets passed to the next site a visitor's browser talks to.
X-XSS-Protection
A legacy header, kept for older browsers that still read it. Current browsers ignore it and lean on the other headers here instead.
Also on by default, below the header layer — true of the connection itself rather than of any one response:
TLS 1.2 as the floor
A connection asking for anything older is refused outright, rather than allowed through on a weaker cipher.
IPv6
Reachable equally well over the newer internet addressing scheme, not only the older one.
Compression
Text responses leave compressed when a browser asks for it, so a visitor's connection carries fewer bytes for the same page.
Yours to choose: a Content-Security-Policy
We don't ship a default one. A policy written without seeing what a real page actually loads breaks it more often than it protects it. Brief us on what your page loads from, and we'll write one with you — see the change table below.
Who changes what, and what it costs
One edge rule is an ops request. A change to how your own app routes is application routing — a code change, so it goes through the loop instead.
| Request | Who | How it's asked for | Cost |
|---|---|---|---|
| Add or change one redirect, a header, a 404, or a maintenance window | CustomHosted | Send it through the same quote channel as any other request. | No charge — a single edge rule is an ops request, the same as a DNS record. |
| A redirect map for a move, so old links keep their rankings | CodeHerder | Briefed like any other change — this is what the Agentic iteration — CodeHerder add-on covers. | Priced as a briefed change: an agent opens the pull request, a human merges it, and the same pipeline redeploys and clears the cache. |
| A Content-Security-Policy tuned to your real app, or an SPA fallback rule | CodeHerder | Briefed against your app's own routes and the sources it actually loads from — the Agentic iteration — CodeHerder add-on. | Priced as a briefed change, same as above: an agent opens the pull request, a human merges it, and the same pipeline ships it. |
| A policy for a page full of third-party embeds, a redirect map for hundreds of URLs, or a routing redesign | CustomLabs | Scoped as its own piece of work, the same as a first build. | Quoted flat, up front. Still ships through the same pipeline once it's built. |
Read how a change gets briefed in the first place on Brief a change, and how it ships on The Loop.
The honest limits
Not buried in a footnote — the same discipline as every other honesty band on this site.
No web-application firewall or rate limiting as standard
A standard plan checks the rules on this page and nothing more. Filtering traffic by pattern or capping request rates is a real thing we can build — just not something included by default.
No per-request compute beyond resolving the address
The check that matches a URL to a rule runs at the edge. It doesn't run your code. Anything that computes an answer per request needs an instance behind it.
A browser's own cache, or a proxy in between, isn't ours to purge
Clearing our own cache on every deploy is real and automatic. What a visitor's own browser, or a network in between, decides to hold onto afterwards is outside anyone's control, ours included.
We won't write a Content-Security-Policy blind
A policy written without seeing what a real page actually loads breaks it more often than it protects it. This is why it's a briefed change, not a default.
On a dedicated instance, the app sets its own headers
The rows above are what a static site gets by default. On a dedicated instance, your app or its own reverse proxy is what actually sets response headers — we help set that up rather than guessing at it from outside.
DNS-level geo-routing or traffic-splitting is a custom quote
Same as on Domains: a standard plan points a domain at one place. Splitting traffic by region or condition at the DNS layer is real work we can do, just not a standard-plan default.
Delivery questions
The questions that come up once a move, an app, or a URL stops being hypothetical.
01Will my old URLs keep working after a move?
Only if a redirect map is set up for them — it isn't automatic. A redirect map for retired URLs is a briefed change under the Agentic iteration — CodeHerder add-on: an agent opens the pull request, a human merges it, and the old addresses start forwarding to their new homes.
02Will I lose search rankings when I move?
Not if the old addresses forward to their new ones with a permanent redirect (301) before the old ones go dark. That's exactly what the redirect map above is for — see Migrations for the cutover itself.
03How fast does a deploy reach visitors?
Right away. A deploy clears every cached copy across the whole edge network before it finishes, rather than waiting for old copies to expire on their own.
04Can I set my own Content-Security-Policy?
Yes, but not out of the box. We don't ship a default one, because a policy written blind breaks a working page more often than it protects it. Brief us on what your page actually loads from and we'll write one with you.
05My app is a single-page app. Will deep links work?
Not automatically today. A direct link to one of its inner pages needs a fallback rule set up against your app's own routes, so it loads the app instead of hitting a 404 — a briefed change, not a default.
06How do I take a page down properly?
Mark it gone with a 410 if there's nothing to replace it with, or redirect it if there is. Either is a single rule, and either is an ops request — no charge.
07Who'd be doing this if I ran it myself?
The application-routing side — writing, testing, and reviewing a redirect map or a real policy change. The hours ledger prices "shipping the small changes you'd make if there were time" at around 2 hours a change, assuming about 3 changes a month — here, that row moves to the Agentic iteration — CodeHerder add-on instead.
08Does this apply to every site on my account?
Each one gets its own set. If you run more than one site under additional static site, a rule added to one is reviewed and set up on its own — it never quietly applies to the others.
09What happens when someone hits a URL that doesn't exist?
Your own not-found page comes back, with a real 404 status code attached — not a generic error document from somewhere else in the stack.
10Do you redirect www to the bare domain, or the other way round?
Not unless you ask for it. Both addresses are live, and both sit on the certificate. Picking one as canonical, and setting up the single redirect that enforces it, is an ops request — at no charge.
What delivery connects to
- Platform
Where a request actually goes — the edge, storage, and dedicated compute this page's rules get applied on top of.
- Domains
The zone, the records, and the certificate — everything that has to resolve before this page's rules ever get a chance to run.
- Migrations
The move this page's redirect map is built to survive, followed end to end.
- Performance
The measured page weight and speed this page deliberately never restates.
- Under attack
The rest of the perimeter — firewall, DDoS mitigation, and rate limiting — that this page's headers sit alongside.
- Logs
The record of what a request met on its way through — this page owns the rules, that page owns the line written down about them.
- Security
Backups, patching, and TLS & DNS — the rest of the security posture.
- The Loop
How a briefed redirect map or header change actually ships: brief it, an agent opens the pull request, a human merges it.
- Environments
Where a redirect or header change gets checked before it merges — the staging mirror this page's briefed changes go through first.
- Pricing
The rate card this page's "redirects/headers" line is drawn from, in full.
- Glossary: Delivery & network
Plain-English definitions for every term on this page.
Need a redirect map or a real CSP?
Brief it through the same quote channel as any other request — an agent opens the pull request, a human merges it, and the same pipeline ships it.