shebang!

The p. url

p.shebang.pro/<public-id> — how a page's address is built, and what changed for older accounts.

The p. url

A published page is served at:

p.shebang.pro/<public-id>

where the public id is 12 characters from a 32-symbol alphabet, matching ^[a-z2-7]{12}$. It's assigned once, at publish time, and never changes — renaming a page's title or its slug afterward doesn't touch the address. See public ids and urls for the full rules this shares with sherserve's f. addresses.

The trailing slash

A page's entrypoint is served at p.shebang.pro/<public-id>/ — with a trailing slash. The bare p.shebang.pro/<public-id> answers a 308 to the slashed form (query string preserved). That is what makes a bundle's own relative references (<link href="styles.css">, <a href="about.html">) resolve inside the bundle rather than at the host root; a bundle asset is served at p.shebang.pro/<public-id>/<path> as before. Links you share can use either form.

The old @handle/slug form

Older accounts may still see a page referred to by its owner's handle and slug, @handle/slug, in places that predate public ids. Visiting that form answers a 301 redirect — preserving any sub-path and query string — to the id-based address above, for one release, rather than serving the page directly. Anything you link going forward should use the p.shebang.pro/<public-id> form; the redirect is a bridge, not a permanent alternative.

Slug is a label, not an address

A page's slug still exists and shows up in the dashboard and in a short link's preview card, but it plays no part in the served url anymore. Renaming it is purely cosmetic and never breaks a link.

Every publish also creates an sl.shebang.pro short link automatically, alongside the p. address — see short links and aliases for how that wrapper works and what deleting it does.

Next

Blogs.