URLs are Directories
Just a friendly reminder that URL paths are directories.
Just a friendly reminder that URL paths are directories. When you have an URL pathname that looks like /user/item/4, there’s an implicit understanding that /user and /user/item are also valid URLs. The underlying folder structure looks like this:
└── user
    └── item
        ├── 1
        ├── 2
        ├── 3
        └── 4
If you don’t want to create extra index pages, use - instead. E.g. user-item-4. There is nothing inherently better about using / instead of -, but the later comes without the implicit suggestions that there is an underlying folder.
├── user-item-1
├── user-item-2
├── user-item-3
└── user-item-4
This may not matter for consumer-facing sites, but there’s plenty of developer sites that get this wrong, too:
GitHub will give you URLs like
/qwtel/hydejack/tree/v8, but/qwtel/hydejack/treedoesn’t exist.└── qwtel └── hydejack └── tree # THIS FOLDER DOES NOT EXIST └── v8 # WE PUT THINGS IN IT ANYWAY
Uhm, actually, this is the page I am looking for…
npm will give you organization-namespaced package URLs like
/package/@platformparity/streams, but the organization pages don’t exist.For some extra fun try
/package, which — instead of returning a list of all packages — will redirect to/package/package🙄└── package # symbolic link ├── package # with folders in it └── @platformparity # some of which don't exist └── streams # but have stuff inside anyway 🤷♂️
Now this is not the web page I am looking for.
Jekyll’s default
permalinkstructure looks like/2018/06/06/urls-are-directories, but no pages for/2018,2018/06, and/2018/06/06are created. The proper URL is/2018-06-06-urls-are-directories
To recap: / has a special meaning in path names, while - does not. When you need to visually separate parts of your URL, but have no plans of introducing extra index pages, use -.