Page names

Anything the user can see on a rendered site is a page, even if it’s a blob, such as an image. However, we don’t always refer to the page with the name of the output file. For example, an input file foo.mdwn gets turned into an output file foo/index.html, but the page is referred to as just foo when linking to it from another page.

In reality, a page can have several names:

A source file might not exist if a page is generated during site building. For example, an RSS feed generated from an inline directive would be like this.

In addition, the “root page” of the site, from source file index.mdwn, has the logical name / (slash). All other pages have a logical name that is a slash-separated path from the root of the site: /blog/2025 would be the page that lists all blog posts from the year 2025.

Examples

source logical output
index.mdwn / index.html
(none) /index.rss index.rss
foo.mdwn /foo foo/index.html
foo/bar.mdwn /foo/bar foo/bar/index.html
yo/index.mdwn /yo yo/index.html
xyzzy.jpg /xyzzy.jpg /xyzzy.jpg

In the table above, xyzzy.jpg is a “blob”, which means it’s not processed, merely copied into the destination directory as-is. It may be an attachment, or shown as part of a marked up page, but this is not relevant to page names. However, if foo.mdwn includes it the markdown would refer to it as xyzzy.jpg.