URL structure and keeping existing URLs
Four patterns for the addresses of generated pages, and how to match a structure you already have so a rebuild keeps the rankings it has earned.
The four patterns
Set this once under Local Pages, Settings. It decides the slug and the parent of every page generated afterwards.
- Flat gives
/boiler-repair-leeds/. Nothing to configure, and no parent page. - Hierarchical gives
/boiler-repair/leeds/, nesting each page under its service’s hub page. The slug is the area name. - Area first gives
/leeds/boiler-repair/, nesting each page under its area’s landing page. The slug is the service name. - Custom gives
/locations/boiler-repair-leeds/: one parent page you pick once, and a slug you write as a template.
Hierarchical and area-first both need a designated hub page for the relevant entity, one per service or one per area. Without one, that page falls back to a flat slug rather than landing somewhere broken.
Matching a structure you already have
This is what the custom pattern is for. If you are replacing another plugin, the pages you already rank for have addresses you would rather not change, because changing them means redirects and a period of lost ground. Custom lets you reproduce most existing shapes exactly.
Choose the parent page every generated page should sit beneath, then write the slug as a template using the {service} and {area} tokens:
{service}-{area}under a Locations parent gives/locations/boiler-repair-leeds/.{area}-{service}gives/locations/leeds-boiler-repair/instead.- Literal text works too. If your old slugs were shorter than the full service name,
heating-{area}gives/locations/heating-leeds/.
There is no per-area setup: fifty areas need no more configuration than one. The page titles are unaffected, so a slug can differ from the heading on the page.
The one rule
The template has to keep the pages distinct. Leave {area} out and every page resolves to the same slug, at which point WordPress quietly numbers them -2, -3, -4 rather than refusing. The settings screen warns you if the template cannot tell your pages apart, and a template with no usable token at all falls back to the default.
Listing the pages on your parent
Your parent page probably wants to link to everything beneath it. Put on it and it lists every area page for that service, staying in step as you add areas. The service ID is in the address bar while you edit the service. There is a matching for the other direction.
Changing the pattern after you have generated
Switching pattern does not move pages that already exist; it applies to what you generate next. Pro can migrate them, updating the slugs in bulk and serving a 301 from each old address to its new one, or reporting each move to your redirect manager if you would rather it did not. On the free plugin, existing pages keep the addresses they were generated with.