WHA Docs
Content

Managing Redirects

When and how to set up URL redirects — plugin-managed vs server-level.

When to redirect

Set up a redirect any time a URL changes:

  • A page slug is renamed
  • A page is removed or consolidated into another
  • A provider leaves WHA (point their page to the provider listing)
  • An old URL structure is replaced (e.g. the redesign migrated many legacy paths)

Broken URLs hurt SEO and the patient experience. The Redirection plugin tracks 404s, so check it now and then for URLs that need redirects.

Redirection plugin (wp-admin)

Most redirects run through the Redirection plugin in wp-admin at Tools → Redirection.

To add one:

  1. Go to Tools → Redirection
  2. Enter the Source URL (the old path, e.g. /old-page/)
  3. Enter the Target URL (the new path, e.g. /new-page/)
  4. Set the HTTP code — 301 (permanent) for most cases, 302 (temporary) for short-term redirects
  5. Save

The plugin handles pattern matching (regex), URL parameters and logging. It also shows 404 logs so you can spot URLs that need redirects.

Redirect Status Codes

These come up a lot, and they pair up. What matters for SEO is permanent vs temporary, not the exact number.

TypeCodesUse whenWhat Google does
Permanent301, 308A URL has moved for goodIndexes the new URL and passes ranking signals to it
Temporary302, 307The move is short-livedKeeps the original URL indexed

Within each pair the codes are essentially the same for search. 301 and 308 both mean "permanent"; 302 and 307 both mean "temporary." The only real technical difference is that 307 and 308 preserve the HTTP method (a POST stays a POST), while 301 and 302 historically allowed it to change. For everyday content redirects, use 301.

Google uses the redirect type as a canonicalization signal and groups them the same way.

Redirect CSVs

The redirects/ directory in the repo holds CSV files from the redesign migration:

  • redirect-rules.csv — Active redirect rules
  • url-mapping.csv — Full URL mapping from the old site to the new one (~89k rows)

These drove the initial migration and stick around for reference. Add new redirects through the Redirection plugin, not these files.

Server-level redirects

Some redirects run at the Nginx level in src/nginx.conf:

  • /wp-admin/wp/wp-admin/
  • /wp-login.php/wp/wp-login.php

These are structural and can't change. They exist because WordPress core lives in the /wp/ subdirectory. Don't remove them.

The redirects.php mu-plugin handles additional server-level redirects that need to run before WordPress fully loads.

Best practices

  • Always use the Redirection plugin for content redirects. It's auditable, searchable and doesn't need a deploy.
  • Use 301 (permanent) unless the redirect is genuinely temporary
  • Don't chain redirects. If /a redirects to /b and /b to /c, point /a straight at /c.
  • Check 404 logs now and then in Tools → Redirection to catch broken links

On this page