Domains and subdomains

Every route lives on a host. The host is either a subdomain of rt.ht that you claim, such as name.rt.ht, or your own domain. This guide explains how routes map to hosts and paths, how to claim and release a subdomain, and how to connect a custom domain.

Routes, hosts and paths

A route is a host plus an optional path, as the Routes reference describes. A bare name such as name means name.rt.ht. A name with a dot, such as example.com, is a custom domain.

How routes map to URLs

RouteHostClaim you needServed at
namename.rt.htnamehttps://name.rt.ht/
name/docsname.rt.htnamehttps://name.rt.ht/docs/
example.comexample.comexample.comhttps://example.com/
www.example.com/docswww.example.comwww.example.comhttps://www.example.com/docs/

Every directory of a host is its own deployment. name/docs and name/docs/sub are two deployments, with their own files, worker, versions and screenshots, and there is no fallback from one to the other. Request routing shows how a URL finds its route.

Sites and origins

All the path routes of one host share one browser origin: cookies, localStorage, IndexedDB, service worker scopes and the sign-in session. Different hosts, such as a.rt.ht, b.rt.ht and your own domains, are separate sites.

rt.ht is on the Public Suffix List, so every name.rt.ht is its own registrable domain. Cookies cannot be shared between subdomains, and browsers treat a.rt.ht and b.rt.ht as different sites for storage partitioning, SameSite and third-party rules. Sign-in is per host too: each name.rt.ht and each custom domain has its own session. See Security and access model.

Claim a subdomain

The owner of a route must hold the claim of its domain. For name.rt.ht routes the claim is name. The first deploy to a free name claims it for you, as Deploying to RTEdge.net shows. You can also claim names yourself in the Domains dialog. By default an account holds one claimed domain, and it is an rt.ht subdomain. See Limits and quotas.

Name rules

  • A name has at least 4 characters, and uses letters, digits and hyphens.
  • It does not start with _.
  • It is not a reserved word. The reserved words are common technical and brand terms, such as admin, billing, docs, login, support, github and cloudflare. You do not need the list: the claim prompt tells you when a name is not available.
  • Nobody else holds it. A name that someone else already claimed fails with "domain in use".

A short or reserved name shows "🔴 not available", with "(subdomain too short)" under 4 characters, and the platform refuses it with "reserved domain".

Claim in the Domains dialog

Choose Domains in the user menu. The dialog lists your claimed domains alphabetically: subdomains with a gift icon, custom domains with another icon and a status icon. Arrow keys move between entries. The claim domain button at the end opens a prompt labeled "Domain", with the hint ➡️ subdomain | domain.tld.

Type a name. The prompt normalizes it like a route and shows its host. Its status moves from "🔵 waiting..." and "🟡 checking..." to "🟢 available", "🔴 not available" or "🟠 error checking". The Claim button works only when the name is available. A toast with the domain confirms the claim. If your account cannot hold another domain, the claim fails with a message that the domain quota is used up.

Release a subdomain

Click the name in the Domains dialog. A prompt titled "Release <domain>" asks you to type the domain to confirm, and its red Release button works only when the text matches. Only the account that claimed a name can release it.

Warning: Releasing a domain does not delete the deployments under it. They keep being served. But until you claim the domain again, you can neither redeploy nor delete them. Delete the routes first. See Delete a deployment.

Use your own domain

A custom domain needs an upgraded account. Claim the full hostname: www.example.com and example.com are two separate claims, and each needs its own DNS record.

Claim and set up

  1. Choose Domains in the user menu, then claim domain, and enter the hostname, for example www.example.com.
  2. Click the domain in the list to open its setup panel. The first time, the panel registers the hostname with the platform for you. RTEdge.net issues a TLS certificate by domain validation, with TLS 1.3 as the minimum version, and turns on HTTP/2 and Early Hints. You can also open the panel on its own at rtcode.io/edge/ch/.
  3. Add the DNS record that the panel shows, at your DNS provider.
  4. Wait for the green check, then deploy to the domain as a route.

The DNS record

Create a CNAME record. The Name is the part to the left of your registrable domain: www for www.example.com, and @ for the apex. The Content is rtedge.net. If your DNS is on Cloudflare, set the proxy status to DNS only and do not proxy the record. Hover the Content cell in the panel to see the CNAME that was found.

plain
Type   Name   Content      Proxy status
CNAME  www    rtedge.net   DNS only

Note: Not every DNS provider allows a CNAME at the apex of a domain. Use a provider that supports CNAME flattening or ALIAS records, or connect a www name instead.

Status

The record row shows a green check when the platform reports the hostname active, and a red exclamation mark otherwise. The domain's button turns green when the hostname is active and either its certificate is active or the domain already answers through RTEdge.net. Otherwise it is amber, with the word setup. The Domains dialog uses the same test.

The panel has buttons to register the hostname again, to open the domain in a new tab, to reload the status, and to delete the domain, which removes the registration and releases the claim. An active domain asks you to type its name before it is deleted.

How custom domains differ

  • The platform adds no Strict-Transport-Security and no Referrer-Policy header, and every response carries Edge: RTEdge.net. See Response headers.
  • Each domain has its own sign-in session.
  • The same redirects apply as on rt.ht: a path without a trailing slash is redirected to its slash form.

The in.rt.ht gateway

https://in.rt.ht/<route>/… serves any route through one shared host. A bare name gets .rt.ht, so in.rt.ht/name/, in.rt.ht/name/nav.js, in.rt.ht/name/? and in.rt.ht/example.com/docs/ all work. The Edit and Versions buttons of the Recent Deployments drawer go through it. The trailing-slash redirect applies there too. See in.rt.ht and short links.

See also