Xomox Redirect Audit — 2026-05-05 (post-launch +7 days)

Source of truth for redirects: Redirection plugin (v2.2.0) on production. Never .htaccess.

Data source: wp_s5masmo7u3_redirection_404 table on production (queried 2026-05-05). Plugin expire_404 is set to 7 days, so this captures roughly the entire window since launch (2026-04-28 → 2026-05-05).

Current state: - 3,194 distinct 404 hits logged - 71 active redirects already in place (most heavily hit: /contact-us/ 35, old service slugs 23, /about-us/ 17) - 400 redirect hits served

The previous dev (or G&M during launch prep) did most of the heavy lifting. This audit identifies what's still leaking.


Bucket A — Old-site URLs to redirect (high priority)

These are real pages from the prior xomoxjewelry.com site that still have inbound links / Googlebot indexing. Worth real destinations on the new site.

Source (404 path) Hits Suggested destination Notes
/services/repair-after-sales/appraisal/ 15 /services/repair-after-sales/ (parent) — confirm if "appraisal" is now folded into another sub-service or simply removed Other repair-after-sales children DO have redirects in place; this one was missed
/handcrafted-mountings/ 11 /services/private-client-bespoke/ or closest equivalent Old top-level page; check if there's a "mountings" portfolio category to land on
/laser_engraving/ 10 /services/production/laser-welding-polishing/ (which already redirects to /laser-welding/) — set this directly to /laser-welding/ to avoid a hop Note underscore in source — old slug format
/author/xomox_jewelry/page/2/ 10 /blog/ or /news/ — wherever the new news index lives, OR 410 it This is a WP author archive; the new site likely doesn't expose author archives at all
/rubber-molds/ 9 /services/production/precious-metal-casting/ (closest production-process match) Old top-level page about rubber-mold making
/business-integrity/ 4 /about/ Old standalone page
/piotr-in-2016-tcs-new-york-city-marathon/ 3 / (home) — consistent with other marathon posts already redirected to / One of several Piotr-marathon blog posts; the rest are already redirected to /
/news (no trailing slash) 3 Match wherever the news index lives on the new site (or /blog/ which already redirects to /) Confirm the canonical news/blog URL

Action: confirm the destination URLs with Eric, then add via Redirection plugin (Local first, then push to prod with explicit per-action approval).


Bucket B — Old uploaded image URLs (decision needed)

Googlebot has dozens of 2013–2016 /wp-content/uploads/YYYY/MM/...jpg URLs indexed. Top hitters: medal1_2.jpg (15), eternity_bands.jpg (15), pio_b10m.jpg (11), pio_q10.jpg (11), then a long tail.

Recommendation: don't add per-image redirects. Two reasons: (1) finding semantically equivalent new images is guesswork, (2) Google Image Search will deindex these naturally over a few months. If image search traffic to the old site was significant, Eric can call this out and we revisit.

One exception: if any of these image URLs are referenced in outbound content we control (press, social, partner links), redirect those individually.


Bucket C — Bot / scanner noise (drop, do not redirect)

The bulk of the 3,194 404s. Hacker / vulnerability scanners probing: - WordPress username enumeration: /?author=1, /?author=5 - Generic PHP shell probes: /admin.php, /wp.php, /abcd.php, /ioxi-o.php, /file.php, /info.php, /xxx.php, dozens more - Plugin/theme exploit probes: /wp-content/themes/seotheme/db.php?u, /plugins/content/apismtp/..., /ALFA_DATA/alfacgiapi/perl.alfa - Common backup/dev paths: /backup/, /old/, /wp/, /wordpress/, /new/, /blog/ (legitimate but already redirected to /) - iOS device probes: /apple-touch-icon.png, /apple-app-site-association (ignore unless Eric wants real touch icons added)

Action: none. These are low-cost 404s and any redirect we add would just give scanners a faster confirmation that the path resolves.

Optional: add a real apple-touch-icon.png to site root — small UX nicety, drops 6 daily 404s.


Bucket D — Real site bug (NOT a redirect issue)

/"/cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js (5 hits) and /"/cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js (4 hits).

The leading /"/ prefix means the GSAP CDN URL is being emitted as a relative URL with extra quote/slash characters. Somewhere in the theme a <script src="…" tag is being built incorrectly. Likely related to the GSAP "selector not found" console warnings on home (Task #10).

Action: find and fix the malformed script tag. This is a code fix, not a redirect. Already filed as Task #10 in this session.


Bucket E — Other anomalies worth a quick look

Path Hits Note
/sitemap.xml.gz 3 If Yoast is generating only /sitemap_index.xml, fine to ignore. If Eric wants gzipped output, that's a Yoast setting.
/fonts/Ottawa.ttf 4 Theme references a font path that doesn't exist? Check css/general.css and CDN.
/wp-content/et-cache/ 4 Divi-era cache directory probe. Ignore.
/graphql, /api/graphql, /mcp 3-4 API exploration probes. Ignore.

Net redirect plan (proposed) — IMPLEMENTED 2026-05-05

8 redirects added to both local and prod Redirection plugin. All 8 verified 301'ing correctly on xomoxjewelry.com:

Source → Destination Verified
/services/repair-after-sales/appraisal/ /services/repair-after-sales/
/handcrafted-mountings/ /services/private-client-bespoke/
/laser_engraving/ /laser-welding/
/author/xomox_jewelry/page/2/ /
/rubber-molds/ /services/production/precious-metal-casting/
/business-integrity/ /about/
/piotr-in-2016-tcs-new-york-city-marathon/ /
/news /

Implementation gotchas (logged for next time): - Direct DB INSERT into wp_redirection_items requires populating match_url (the indexed lookup column), not just url. - With flag_trailing: true in redirection_options, match_url for trailing-slash sources must be stored without the trailing slash. The plugin normalizes during matching.

Open the Redirection plugin's "404s" tab in ~3 days to verify these specific 404s have stopped logging.

Re-pull this audit weekly for the first month, then monthly. Plugin retention is 7 days, so the data window is rolling.