Why Do WooCommerce Product URLs Return 404 Errors?
Why This Happens
Product URLs depend on WordPress's rewrite rules correctly routing the clean URL to the actual product post, and several independent things can break that routing or the underlying product's availability without any obvious warning — the product still exists in the database in most cases, it's just not reachable at the URL being requested.
Common Causes
- Stale permalink rewrite rules, particularly after a plugin change, server migration, or a bulk product import that should have but didn't trigger a rule refresh.
- The product's status set to Draft, Pending, or Private rather than Published, which is easy to overlook after a bulk edit or an import that didn't set status correctly.
- A permalink or URL structure change (switching the product base slug, or a broader site permalink structure change) without setting up redirects from the old URLs to the new ones, breaking any bookmarked or externally linked product URLs.
- A duplicate slug conflict, where two products or a product and another piece of content ended up with the same URL slug, causing WordPress to serve the wrong one or neither correctly.
- The product genuinely deleted or trashed, which is worth confirming directly rather than assuming a technical routing issue.
How to Diagnose and Fix It
- Go to Settings → Permalinks and click Save to refresh rewrite rules, resolving many cases immediately.
- Check the specific product's status in the admin, confirming it's actually Published.
- If a URL structure change happened recently, set up 301 redirects from old product URLs to their new equivalents to avoid losing SEO value and breaking external links.
- Check for slug conflicts if the issue affects one specific product rather than the whole catalog.
Need broken product URLs fixed and properly redirected? See WooCommerce fixes.