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.
| 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.