URLs are clean and human-readable
Why it matters
Hash-based routing (/#/about) is invisible to every search crawler: the entire site is treated as a single URL because servers do not receive anything after the #. Query-string routing (/?page=about) is indexable but ambiguous — Google often merges parameterized URLs into one canonical, splits PageRank across permutations, and rate-limits crawling. Clean path-based URLs are also more shareable, more memorable, and easier to parse in analytics reports.
Severity rationale
Low because modern frameworks default to clean URLs — only legacy SPAs and misconfigured custom routers trigger this.
Remediation
Move to the framework's file-system router. In Next.js App Router, each folder under app/ with a page.tsx becomes a path segment — no config required. Delete client-side-only hash routers like HashRouter from react-router-dom and replace with BrowserRouter (for a standalone SPA) or the framework-native router.
app/
page.tsx -> /
about/page.tsx -> /about
blog/[slug]/page.tsx -> /blog/my-post
Add permanent redirects in next.config.js from the old hash URLs to the new paths to preserve any existing backlinks.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the SEO Fundamentals Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
Taxons
History
- 2026-04-18·v1.0.0·Initial import from seo-fundamentals·automated