Redirects
Preserving every existing URL so links, bookmarks, and search rankings keep working
When a site's structure changes, its URLs change with it. Without redirects, every old link whose URL changed lands on a "page not found": bookmarks, links in past email appeals, printed materials, and the pages Google already has indexed.
The new navigation reorganizes the site — "Who we are" becomes "About," the donation pages are restructured — so every URL that moves needs a rule from its old path to its new one.
Broken redirects are invisible until they cost you: a donor clicks a link in an email and hits a dead end, or a page that ranked well in search quietly drops off.
The scope
We went through the legacy site URL by URL and gave every one a destination in the new structure:
| What it is | What happens to it |
|---|---|
| Pages that move to a new address | Content moves, redirect follows it |
| News posts | Each becomes a news record at a new address |
| Events | Each becomes an event record at a new address |
| Dining center locations | Each becomes a location record on the dining center map |
| Campaign links | Forward to the giving form or the campaign page |
| Duplicate pages | Forward to the page they duplicate |
| Pages not rebuilt | Forward to the nearest useful page, so none of them 404 |
A handful keep the exact address they have today. Everything else gets a rule. Most of that is news posts, events and dining centers, where the old and new addresses follow a fixed pattern and the rules are generated as the content imports.
The full URL-by-URL mapping lives in the project's content source files, alongside the captured copy from the legacy site. It's a working document rather than something to read end to end.
What already exists on the legacy site
Redirects already in place that must be preserved:
- A set of URL mappings built up over previous site changes: old paths that already forward to current ones. The exact count comes from the export.
- An old-domain redirect:
mealsonwheelspeople.orgforwards towww.mowp.org, and needs to keep working. - Additional rules stored in the current CMS rather than the codebase, which have to be exported from the live site directly before the rebuild. It's on the migration checklist so it isn't overlooked.
The shape of what redirects do once the new structure is live:
/our-story301/about/our-story/our-people301/about/leadership/our-story/annual-report301/about/financials/our-story/sustainability301/about/sustainability/ways-to-give301/donate/ways-to-give/press301/news-events/press/quarterly-newsletter301/news-eventsmealsonwheelspeople.org301www.mowp.orgEvery permanent move uses a permanent redirect: the kind that tells search engines to transfer a page's ranking to its new address, not just forward the visitor. That single detail is most of what "preserving search rankings" means.
The What We Do section
This section is reorganized more than any other, so its redirects are set out in full rather than left to the export. Every rule below was checked against the live site.
/what-we-do/meals-on-wheels301/what-we-do/meal-delivery/what-we-do/dining-centers301/what-we-do/community-dining/get-meals/dining-centers301/what-we-do/community-dining/what-we-do/meals-for-kids301/what-we-do/meals-4-kids/diners-club301/what-we-do/diners-club/diners-club/become-a-partnering-restaurant301/what-we-do/diners-club/pet-program301/what-we-do/pet-program/news-events/news/sfmnp301/what-we-do/beyond-the-meal/what-we-do/advocate301/volunteer/advocacy/what-we-do/online-meal-request301/get-meals/request/what-we-do/the-diner-vancouver301/what-we-do/the-diner/what-we-do/this-months-menu301/what-we-do/meal-delivery/what-we-do/pdxpop301/what-we-do/what-we-do/chefs-for-seniors301/what-we-doA few are worth a note. /what-we-do/advocate lands under Volunteer, so it's the one most likely to be missed if these rules are handled section by section. /what-we-do/this-months-menu points at Meal Delivery; if the monthly menu question is answered with a page of its own, this rule changes to point there. The last two are pages the site doesn't rebuild, so they land on the section overview rather than a 404.
Medically Tailored Meals and The Diner keep the URLs they have today, so neither needs a rule.
Campaign links
Two dozen addresses on the legacy site exist only to get someone from a mailer, a TV segment or a checkout counter to a giving form: /donate-eoy, /donate-today-kgw, /fillthesoul, /bpn, /pge and the rest. They get printed on materials that stay in circulation long after the campaign ends, so all of them keep working.
/donate-eoy301/donate?c=eoy/donate-today-kgw301/donate?c=kgw/fillthesoul301/donate?c=fillthesoul/support-donate-dinner301/donate-dinner/stride-for-seniors301/news-events/events/stride-for-seniorsThe ?c= carries the campaign name through to the giving form and your analytics, so a gift from KGW is still distinguishable from one from the year-end mailer. That's what the separate pages were doing for you, kept without the pages.
Two campaign links point at their own funds. Should that continue? /donate-clark-county goes to the Clark County Community Fund, with its own phone number, and /waterfront-blues-fest-donate uses a different giving form from every other campaign link. If they all forward to the general form, those gifts stop being designated. We can either have the Donate page pre-select a fund from the address, or leave these two pointing at their own forms.
Making new ones yourself
You shouldn't have to ask us for a campaign address. If the printed address only needs to reach the giving form, it's a redirect. The moment you want Larry's photo and a paragraph about his dog on the page, it's a campaign page: a short address, left out of the menu, which is what /giftofmeals and /costofcare already are.
For how to make one, see Redirects. For the same job on the legacy site before launch, see Redirects in the current site docs.
Editors can create redirects that stay on your site; anything pointing off it needs a Publisher.
Redirects are Publisher-only today, which puts them out of reach of whoever ordered the mailer with the short address on it. The reason for the restriction is real: a redirect can send a visitor somewhere else entirely.
Splitting on destination keeps both. A same-site redirect is low-stakes and easy to correct; an off-site one deserves a second pair of hands. Tell us if you'd rather keep it simple and give those staff Publisher accounts.
News, events, and dining centers
No hand-written rules needed. Each becomes a record in the CMS, the addresses follow a fixed pattern, and the redirects are generated as the content imports.
/2026/05/paul-knauls301/news-events/news/paul-knauls/events/stride-for-seniors301/news-events/events/stride-for-seniors/dining-center-locations/belmont-center301/what-we-do/community-diningEvery news post and event comes across with its original date, no cutoff. Dining centers land on the map page rather than on pages of their own, since that's where their details live in the new structure.
The plan
Export the current redirects
Pull the complete list from the legacy site, both the rules in the code and the ones stored in the CMS. Joey owns this, well before anything on the legacy site is touched.
Map old URLs to new ones
Done. Every address has a destination, with a second pass against the export above in case it turns up an address the legacy sitemap doesn't list.
Preserve the existing redirects
Carry over the rules that already exist, including the old-domain forward.
Set them up before launch
All redirects go live at launch, not after. Test the most important paths — donation pages, dining centers, anything linked from active campaigns — before and right after.
Watch for what the mapping missed
We monitor the site's not-found errors for a few weeks after launch. Any old URL that slipped through shows up there and gets a rule.