Opens in a new tab
  1. Home
  2. Guides
  3. SEO
SEO guide

301 vs. 302 vs. 410: which redirect to use

Learn the difference between 301, 302 and 410 responses in WordPress and how to choose the correct status for moved, temporary or permanently removed content.

  • Updated August 25, 2026
  • 16 min read
  • WordPress guide

301 vs. 302 vs. 410 is one of those redirect topics that looks simple until a WordPress site starts accumulating old URLs, temporary campaigns, deleted pages, migrated content and several years of structural decisions nobody remembers making.

The three status codes solve different problems.

A 301 says that a resource has moved permanently to another URL. A 302 says that the move is temporary and the original URL should still be treated as the long-term location. A 410 does not redirect anywhere at all: it says that the resource has been intentionally removed and is expected to remain unavailable.

Using the correct response matters for visitors, browsers, caches, crawlers and search engines. It also makes future maintenance considerably easier because the HTTP response actually describes what happened to the content instead of merely sending everyone somewhere convenient.

This guide explains when to use 301, 302 and 410 in WordPress, how each status behaves, what they communicate to search engines, how they differ from 404 responses, when redirects should point to a relevant replacement and how to avoid common redirect mistakes such as homepage dumping, redirect chains and permanent temporary redirects.

What are HTTP status codes?

Every HTTP response includes a status code describing the result of the request.

Common examples include:

200 OK
301 Moved Permanently
302 Found
404 Not Found
410 Gone
500 Internal Server Error

The official MDN HTTP status code reference groups these responses into categories such as success, redirection, client errors and server errors.

The HTTP specification itself is defined in RFC 9110: HTTP Semantics.

For this guide, the important distinction is:

301 → redirect, permanent
302 → redirect, temporary
410 → no redirect, permanently gone

What does a 301 redirect mean?

301 Moved Permanently means that the requested resource has been assigned a new permanent URL.

A typical response looks like:

HTTP/2 301
Location: https://example.com/new-page/

The browser receives the response and requests the destination in the Location header.

The official MDN 301 documentation describes the status as a permanent move to the URL supplied in the response.

The HTTP specification similarly states that future references to the resource should use the new URI.

Use 301 when the old URL has been permanently replaced

A 301 is generally appropriate when:

  • a page has permanently moved;
  • a permalink structure has changed;
  • a custom post type slug has changed;
  • content has been consolidated into a new page;
  • a website has migrated to another domain;
  • HTTP URLs permanently move to HTTPS;
  • an old product URL has a permanent replacement;
  • content moves from one section of the website to another.

For example:

/blog/wordpress-security/
→
/guides/wordpress-security/

If the second URL is now the permanent home of that content, the old URL should normally return a 301 pointing directly to it.

For the complete migration process, see How to migrate WordPress URLs safely.

How Google treats permanent redirects

Google describes permanent redirects such as 301 and 308 as signals that the redirect destination should become the canonical URL.

The official Google Search redirect documentation recommends server-side permanent redirects when a page has permanently moved.

In practical terms, if:

/old-page/
→ 301
/new-page/

is a permanent change, the new destination is the URL you are asking search systems and users to treat as the current location.

301 is also a canonicalization signal

Google considers redirects one of the stronger signals available when selecting a canonical URL.

Its canonical URL documentation lists redirects and rel="canonical" among the strongest canonicalization signals.

This makes a permanent redirect particularly useful when the old URL should no longer compete with the replacement.

Do not keep both old and new URLs publicly available when the move is permanent

Suppose:

/old-guide/
200 OK

/new-guide/
200 OK

and both pages contain effectively the same content.

If the migration is permanent, leaving both versions available indefinitely creates unnecessary duplication.

The cleaner structure is normally:

/old-guide/
301 → /new-guide/

/new-guide/
200 OK

with the new URL used in internal links, navigation, canonical tags and XML sitemaps.

What does a 302 redirect mean?

302 Found indicates that the requested resource is temporarily available at a different URL.

A typical response looks like:

HTTP/2 302
Location: https://example.com/temporary-page/

The browser follows the destination, but the original URL remains the address that should normally be used for future requests because the temporary arrangement may later change.

The official MDN 302 documentation describes the target resource as temporarily residing at another URI.

Use 302 when the original URL is coming back

A 302 makes sense when the change is genuinely temporary.

Examples include:

  • temporary maintenance;
  • short-lived campaign routing;
  • A/B testing;
  • a temporary replacement page;
  • inventory or availability situations where the original page will return;
  • a brief operational change;
  • temporary geographic or experiment routing.

For example:

/service/
→ 302
/service-temporarily-unavailable/

If the normal service page will eventually return, keeping the original URL as the long-term reference is appropriate.

Google treats temporary redirects differently

Google says that temporary redirects are followed, but they are not normally used as a signal that the redirect destination should replace the source URL as canonical.

This is exactly why a 302 is useful for temporary arrangements.

If:

/original-page/
→ 302
/test-page/

you are effectively saying:

Send users here for now,
but do not treat the move as permanent.

A/B testing is a classic 302 use case

Google specifically recommends temporary redirects for experiments where users are sent from the original page to a test variation.

Its A/B testing best practices recommends using a 302 rather than a 301 when the test redirect is temporary.

For example:

/pricing/
→ 302
/pricing-variant-b/

Once the experiment ends, the redirect can be removed and the original URL can resume its normal role.

Do not use 302 for a permanent migration

This is one of the most common mistakes.

Suppose:

/old-services/
→ /services/

and the old URL will never return.

Using a temporary redirect communicates the wrong lifecycle.

The correct question is not:

Does the redirect work?

Both 301 and 302 will visibly send the visitor to another page.

The correct question is:

Is this move permanent or temporary?

A temporary redirect can accidentally become permanent in practice

A common WordPress maintenance pattern looks like:

Temporary redirect created
        ↓
Original issue never revisited
        ↓
Two years pass
        ↓
Nobody remembers why it is 302

If a 302 has remained active for months or years, review whether the situation is still genuinely temporary.

Reading a redirect access log can help determine whether an old temporary rule remains active and what traffic still depends on it.

What does 410 Gone mean?

410 Gone is not a redirect.

It is a client-error response indicating that the requested resource is no longer available and that the condition is expected to be permanent.

A response may look like:

HTTP/2 410 Gone

The official MDN 410 documentation describes the resource as no longer available at the origin server with the condition likely to be permanent.

No replacement destination is required.

Use 410 when content is intentionally removed and has no replacement

Examples might include:

  • a permanently discontinued campaign;
  • a deleted resource that should never return;
  • a fraudulent or invalid page intentionally removed;
  • obsolete content with no relevant successor;
  • a product or service that has been permanently retired with no replacement;
  • a mistakenly generated URL that should disappear permanently.

For example:

/summer-sale-2021/
→ 410 Gone

may be appropriate if the campaign is permanently finished and no replacement page provides meaningful continuity.

410 and 404 are similar, but not identical

A 404 Not Found means the server cannot find the requested resource.

A 410 Gone communicates something stronger:

This resource used to exist,
and it has been intentionally removed permanently.

MDN recommends using 404 when the server does not know whether the condition is temporary or permanent, while 410 is appropriate when permanent removal is known.

Do not use 410 when a relevant replacement exists

Suppose you remove:

/old-backup-guide/

because it has been replaced with:

/guides/wordpress-backups/

A 410 would discard the relationship between the two resources.

A 301 is more useful because the content has effectively moved or been replaced.

Use 410 when the correct statement is:

This is gone.

Use 301 when the correct statement is:

This now lives here.

301 vs. 302 vs. 410 at a glance

301 Moved Permanently

Meaning:
The resource permanently moved.

Destination:
Required.

Use when:
The old URL has a permanent replacement.


302 Found

Meaning:
The resource is temporarily elsewhere.

Destination:
Required.

Use when:
The original URL will return or should remain the long-term URL.


410 Gone

Meaning:
The resource is intentionally gone permanently.

Destination:
None.

Use when:
The old URL has no meaningful replacement.

The Location header is what tells the browser where to go

301 and 302 responses normally include a Location response header.

For example:

HTTP/2 301
Location: https://example.com/new-page/

The official MDN Location header documentation explains how the header identifies the redirect destination.

A 410 does not require a redirect destination because the point of the response is precisely that no replacement is being supplied.

301 and 302 have historical method-handling quirks

For ordinary WordPress page navigation, requests are usually GET requests and the distinction is rarely noticeable.

However, HTTP also defines:

  • 307 Temporary Redirect;
  • 308 Permanent Redirect.

These were introduced in part to provide unambiguous method-preserving behavior.

RFC 9110 notes that user agents may historically change a POST request to GET when following 301 or 302 responses.

If preserving the original request method is important, 307 or 308 may be more appropriate.

Why WordPress sites mostly talk about 301 and 302

For normal content URLs, WordPress administrators usually deal with browser navigation through GET requests.

That makes the simpler distinction:

301 → permanent
302 → temporary

sufficient for most page and SEO migrations.

Method preservation becomes more important when redirects affect:

  • form submissions;
  • API endpoints;
  • webhooks;
  • other non-GET requests.

Use Redirect Manager for WordPress URL rules

TheOneWP Redirect Manager supports 301, 302 and 410 rules directly from WordPress.

A rule can conceptually be configured as:

Source:
/old-page/

Type:
301

Destination:
/new-page/

or:

Source:
/temporary-page/

Type:
302

Destination:
/replacement-for-now/

or:

Source:
/removed-page/

Type:
410

The 410 rule naturally does not require a destination.

Use 301 when converting content changes the permalink

WordPress content architecture can change when a post is moved between post types or when rewrite slugs change.

For example:

/blog/wordpress-security/
→
/guides/wordpress-security/

If the content now permanently lives at the second URL, the old permalink should normally redirect permanently.

TheOneWP Post Type Converter can create a Redirect Manager rule when a conversion changes the permalink.

For the SEO consequences of custom post type structures, see WordPress custom post types and SEO.

Do not redirect removed content to an unrelated page

One of the worst redirect habits is:

Deleted page
→ Homepage

for every removed resource on the site.

Imagine:

/docs/old-api-reference/
→ /

The homepage does not replace an API reference.

The visitor’s original intent has been discarded.

A better decision process is:

Relevant replacement exists?
    ↓
Yes → 301 to replacement

No replacement?
    ↓
Permanently removed → 410 or appropriate 404

Do not redirect every expired product to the shop homepage

Ecommerce sites face this constantly.

When a product disappears, ask whether there is a meaningful successor.

For example:

Old camera model
→ New camera model

may justify a 301 if the new product is genuinely the direct replacement.

But:

Obscure discontinued accessory
→ Shop homepage

may provide little value.

Category pages can sometimes be relevant destinations, but relevance should determine the mapping rather than the desire to eliminate every 404.

404 is not automatically an SEO disaster

A legitimate missing URL can return a legitimate 404.

Google explicitly recommends returning a real 404 for removed pages when appropriate rather than producing a soft 404 response.

Its technical SEO guidance notes that pages no longer present should return proper HTTP error responses.

Not every dead URL needs a redirect.

What is a soft 404?

A soft 404 happens when the server returns a normal-looking success response such as 200 OK even though the page effectively says the content is missing.

For example:

HTTP/2 200 OK

Page content:
"Sorry, this product no longer exists."

The HTTP response and page meaning contradict one another.

If a resource no longer exists and has no replacement, return an appropriate error status rather than pretending the request succeeded.

Do not use 301 merely to hide 404s in reports

A crawler may report hundreds of 404 URLs.

The correct reaction is not automatically:

Redirect all of them.

Classify them first.

Ask:

  • Did this URL ever contain real content?
  • Was the URL changed?
  • Is there a relevant replacement?
  • Was the resource deliberately removed?
  • Is the URL simply malformed?
  • Is an internal link generating it accidentally?

The answer determines whether you need a 301, 410, 404 or an internal-link fix.

A 301 should point directly to the final destination

A redirect chain looks like:

/page-2019/
→ 301
/page-2022/
→ 301
/page-current/

The cleaner version is:

/page-2019/
→ 301
/page-current/

/page-2022/
→ 301
/page-current/

Google’s current site-migration documentation recommends redirecting directly to the final destination and minimizing chains because every extra hop adds latency. It notes that Googlebot can follow multiple redirects, but that is not an invitation to build a URL obstacle course.

See the official Google site migration documentation for the broader redirect strategy.

Redirect loops are worse than chains

A redirect loop occurs when no final destination can be reached.

For example:

/page-a/
→ /page-b/

/page-b/
→ /page-a/

The browser eventually stops and displays an error.

Loops can be created when several systems manage redirects independently, including:

  • WordPress;
  • plugins;
  • Nginx;
  • Apache;
  • CDNs;
  • reverse proxies;
  • custom application code.

Keep URL rules centralized where practical.

Remember that WordPress already creates some redirects

WordPress core contains canonical redirect logic through redirect_canonical().

The official redirect_canonical() documentation explains how WordPress attempts to direct certain requests toward the correct canonical URL.

Therefore, if a URL redirects unexpectedly, do not automatically assume your explicit 301 or 302 rule is responsible.

Test the actual HTTP response

The most reliable way to confirm a redirect is to inspect the HTTP response.

You can use browser developer tools or:

curl -I https://example.com/old-page/

A 301 may return:

HTTP/2 301
location: https://example.com/new-page/

A 302 may return:

HTTP/2 302
location: https://example.com/temporary-page/

A 410 may return:

HTTP/2 410

Do not rely only on the fact that your browser visibly changed URLs.

Browsers can cache permanent redirects

RFC 9110 defines 301 responses as heuristically cacheable unless other cache controls say otherwise.

This means testing a 301 repeatedly in the same browser can occasionally become confusing because the browser may reuse a previous result.

When debugging redirects:

  • inspect the Network panel;
  • disable cache where appropriate;
  • use a private session;
  • use curl;
  • test from another client if necessary.

302 responses should remain temporary operationally too

Choosing the correct status code is only half the job.

If a 302 is meant to last for one week, document why it exists and review it later.

Otherwise temporary redirects become permanent configuration by neglect.

A useful temporary rule might include an internal note such as:

Reason:
Maintenance campaign

Created:
August 25

Review:
September 2

Use access logs to decide whether old redirects still matter

Total redirect age tells you very little.

A ten-year-old 301 may still receive important external traffic every day.

A six-month-old temporary redirect may not have been hit once in three months.

Reading a redirect access log explains how to evaluate:

  • hit counts;
  • last-hit dates;
  • referers;
  • user agents;
  • repeat request patterns.

This makes redirect cleanup evidence-based rather than based on how old a rule happens to look in the admin table.

Internal referers can reveal redirects you should bypass

If an access log repeatedly shows requests from your own domain, your internal links may still point to the old URL.

For example:

Internal link:
/about/
→ /old-services/
→ 301
/services/

Update the internal link directly:

/about/
→ /services/

Keep the 301 for external and historical traffic, but stop forcing your own users through it.

External backlinks are a strong reason to retain a 301

If another website still links to:

/old-resource/

and that URL redirects to its proper replacement, the rule continues to provide real value.

Removing the redirect would convert useful historical traffic into an error.

This is one reason permanent URL migrations often require redirects to remain in place for a very long time.

Should permanent redirects ever be removed?

Sometimes, but there is no universal timer.

Before removing a 301, review:

  • recent hits;
  • last-hit date;
  • external backlinks;
  • internal links;
  • search visibility;
  • old documents and marketing material;
  • whether users could still reasonably have bookmarks.

If the redirect remains useful, age alone is not a reason to remove it.

Should 410 responses remain forever?

A 410 can remain in place as long as the deleted URL continues to deserve an explicit Gone response.

Over time, you may decide ordinary 404 handling is sufficient after search engines and external systems have forgotten the URL.

There is no requirement that every historical 410 remain configured forever.

As with redirects, review real request activity rather than choosing an arbitrary expiration date.

What happens to XML sitemaps after a 301?

If:

/old-page/
→ 301
/new-page/

the XML sitemap should normally contain the final URL:

/new-page/

not the redirecting source.

Google recommends listing canonical URLs in sitemaps rather than historical redirect sources.

For the broader WordPress sitemap strategy, see What is an XML sitemap, and why does it matter?.

What happens to internal links after a 301?

Your own internal links should also point directly to the new canonical URL.

Do not leave:

Internal link
→ old URL
→ 301
→ new URL

when you control the original link.

Redirects preserve historical compatibility. They should not become normal internal navigation infrastructure.

What happens to canonical tags?

After a permanent migration, the new page should normally identify the new URL as canonical.

For example:

<link
    rel="canonical"
    href="https://example.com/new-page/"
>

Do not redirect the old URL to the new URL while the new page still declares the old address as its canonical.

That creates contradictory signals for no useful reason.

A 302 does not mean the destination cannot be indexed

A temporary redirect primarily says that the original URL remains the long-term source.

It does not guarantee that the destination can never be indexed under any circumstance.

Google explicitly notes that a temporary redirect is not used as the canonicalization signal that a permanent redirect would provide, but other signals can still affect indexing.

Do not treat HTTP statuses as mystical commands that override every other part of the site.

Do not use redirect codes as access control

A redirect determines where the client is sent.

It does not prove identity or enforce permissions.

For example:

/private-area/
→ /login/

may be part of an authentication flow, but the redirect itself does not secure the private resource.

The actual protected endpoint must still verify authentication and authorization.

Common WordPress 301, 302 and 410 scenarios

Changing a page slug permanently

/about-us/
→ /about/

Use:
301

Moving blog posts into a Guides section

/blog/security/
→ /guides/security/

Use:
301

Temporarily sending a service page to a maintenance notice

/service/
→ /maintenance/

Use:
302

Running an A/B test

/pricing/
→ /pricing-test-b/

Use:
302

Permanently removing an obsolete campaign

/campaign-2021/

Replacement:
None

Use:
410

Replacing an old article with a newer equivalent

/old-backup-guide/
→ /wordpress-backup-guide/

Use:
301

Product temporarily unavailable

If the product page is expected to return, keeping the URL live with availability information can often be better than redirecting it at all.

If a temporary redirect is genuinely needed:

Use:
302

Product permanently replaced by a direct successor

/product-v1/
→ /product-v2/

Use:
301

Product permanently discontinued with no relevant replacement

/product-old/

Use:
410 or appropriate 404

A practical decision tree

Does the old URL have a relevant replacement?
│
├── Yes
│   │
│   ├── Is the move permanent?
│   │       │
│   │       ├── Yes → 301
│   │       │
│   │       └── No  → 302
│   │
│   └── Verify the destination is directly relevant.
│
└── No
    │
    ├── Is the resource known to be permanently removed?
    │       │
    │       ├── Yes → 410
    │       │
    │       └── Unknown → 404
    │
    └── Do not invent an unrelated destination.

Common redirect mistakes

Using 302 for a permanent URL change

The status does not correctly describe the lifecycle of the move.

Using 301 for a temporary test

You are communicating permanence when the original URL is expected to return.

Redirecting every deleted URL to the homepage

The destination often has no relationship with the original content.

Using 410 when a clear replacement exists

You throw away a useful relationship between old and new content.

Redirecting malformed bot URLs

Not every random URL requested by a crawler deserves a redirect rule.

Creating long redirect chains

Historical URLs should point directly to the current destination.

Creating loops across several redirect systems

Plugins, servers and CDNs can accidentally redirect each other.

Leaving old URLs in navigation

Your own links should use final destinations directly.

Leaving redirected URLs in XML sitemaps

Sitemaps should represent current canonical URLs.

Assuming every 404 needs fixing

Some URLs are supposed to be gone.

Using 301 as a substitute for content relevance

A redirect works best when the destination genuinely satisfies the intent of the old resource.

301, 302 and 410 checklist

  • Identify whether the original resource still exists conceptually.
  • Determine whether a relevant replacement exists.
  • Use 301 for permanent moves.
  • Use 302 for genuinely temporary moves.
  • Use 410 when content is intentionally and permanently gone with no replacement.
  • Use 404 when the resource is missing and permanence is not explicitly known.
  • Point redirects to relevant destinations.
  • Avoid redirect chains.
  • Check for redirect loops.
  • Update internal links after permanent moves.
  • Update navigation and breadcrumbs.
  • Update canonical tags.
  • Update XML sitemaps.
  • Test the actual HTTP status.
  • Check the Location header for redirects.
  • Monitor hit counts and last-hit dates.
  • Review temporary redirects periodically.
  • Retain permanent redirects while they continue to provide value.

Related WordPress redirect guides

For the other parts of WordPress URL management, continue with:

Final thoughts

Choosing between 301, 302 and 410 is ultimately about describing what happened to the resource accurately.

If the resource permanently moved, use a permanent redirect such as 301. If the original URL is expected to remain the long-term location and users are only being sent elsewhere temporarily, use 302. If the resource is intentionally gone and there is no meaningful replacement, a 410 can state that directly instead of manufacturing a destination that does not help anyone.

TheOneWP Redirect Manager supports all three cases from one WordPress interface, while Reading a redirect access log explains how to determine whether those rules continue to receive real traffic.

The important part is not removing every 404 from a report or forcing every obsolete URL to return something green in a crawler. It is giving each URL the response that accurately describes its current state.

HTTP already has a vocabulary for “moved permanently,” “moved temporarily” and “gone.” Using the correct word is considerably easier than making future developers reverse-engineer what you meant from three generations of redirects.

Simplify your WordPress stack

A modular WordPress toolkit. 104 focused tools.

Ultimately, you can build cleaner workflows, maintain fewer plugins and enable only the features each website actually needs.