Overview
A full audit of elmirfa.com surfaced three critical/high technical issues plus several optimization opportunities. The site had a strong foundation: clean sitemaps, valid robots.txt, and genuinely strong case-study content. But, its custom static homepage bypassed WordPress's SEO layer entirely, leaving it with no canonical tag, no structured data, and content invisible to non-JavaScript crawlers. Duplicate-URL variants further diluted ranking signals.
All three priority issues were diagnosed, fixed, and verified live in a single working session, with zero downtime and no design changes.
Method
Findings came from live evidence, not assumptions: HTTP header and redirect inspection, raw HTML analysis (pre- vs post-JavaScript render), a sitemap crawl across four child sitemaps, and schema validation. When an automated fetch reported the English page as a 404 and the homepage as "empty," direct inspection disproved both. The page returned 200 and the homepage shipped 40 KB of HTML. Verifying tool output against ground truth kept two false findings off the fix list.
Issues found & fixes applied
1. Homepage had no structured data, canonical, or social metadata (Critical)
The homepage is a hand-built static file that overrides WordPress's front page, so it never calls wp_head() and Rank Math could not inject its SEO tags. I hand-authored a complete <head> SEO layer: a self-referential canonical, a Person + WebSite + WebPage JSON-LD graph linked by @id, and Open Graph / Twitter Card tags. All verified present in the served HTML.
2. Four duplicate versions of the homepage (Critical)
http://, https://, www., and non-www all returned 200 with no redirects, and an outdated /en/onepage-english/ page duplicated the homepage, splitting ranking signals across up to five URLs. I added server-level 301 rules in .htaccess to force HTTPS + non-www in a single hop and retire the old English page, collapsing everything to one canonical URL.
3. Homepage content invisible to AI crawlers (High)
The homepage renders entirely client-side, so AI crawlers (ChatGPT, Perplexity) and non-rendering bots received a blank page. I added a static, semantic text summary inside <main> (H1, about, services, portfolio links, experience, contact). The existing script overwrites it on load, so human visitors see the full interactive page unchanged while crawlers get real, indexable content not cloaking.
Before → after
| Signal | Before | After |
|---|---|---|
| Homepage canonical | None | Self-canonical |
| Structured data (homepage) | None | Person + WebSite + WebPage |
| Social preview (OG/Twitter) | None | Full |
| Homepage URL variants | 4–5 duplicates | 1 canonical (301s) |
| Content for AI crawlers | Blank | Full text fallback |
| HTTPS enforcement | Not forced | Forced |
Technical SEO auditing · HTTP/redirect diagnostics · structured data (JSON-LD) · JavaScript-rendering SEO and progressive enhancement · .htaccess / server configuration · duplicate-content resolution · evidence-based verification.
All "after" claims were verified against the live site at time of writing. See also my homepage SEO audit.