« Return to the blog entry
I was in the same situation as you. Tried to find documentation and examples elsewhere to tell me how it could be done.
I didn't find any, so I had to try myself. It took MANY http restarts to find a solution :-) Here is what I came up with:
The substitution patterns in use on e-conomic's websites are tailored to make clean URLs for these URL structures:
Section pages: domain.tld/section/
Category pages: domain.tld/section/category/
Subpages (1): domain.tld/section/page
Subpages (2): domain.tld/section/category/page
Notice how section pages and category pages ends with a '/' while subpages do not. This is how I want it because of usability, but it is possible to have all pages end with or without a '/'.
Substitution patterns to make this work:
Section level substitutions:
/[section name]/* -> /[db path]/[db name]/[view name]/w-[page URL name]-*
Category level substitutions:
/[section name]/*/* -> /[db path]/[db name]/[view name]/w-[page URL name]-*-*
View for looking up webpages:
The view with the name [view name] got values in first column made of section name, category name and page URLs like this:
Section pages: w-[section name]-
Category pages: w-[section name]-[category name]-
Subpages (1): w-[section name]-[page URL name]
Subpages (2): w-[section name]-[category name]-[page URL name]
Notice how the trailing '-' is used to determine if the page is a section/category page or a subpage.
With this substitution pattern, only the section names needs to be put into substitution documents as absolute values. No big deal as most websites should only have a few sections anyway.
The category names works dynamically and can be chosen/edited in the CMS.