From 585a9503ab21477aa4cb74f660468bd58efd19b9 Mon Sep 17 00:00:00 2001 From: Ryan Salazar Date: Thu, 21 May 2026 17:37:45 +0000 Subject: [PATCH] =?UTF-8?q?homepage:=20make=20'/'=20the=20canonical=20rout?= =?UTF-8?q?e,=20301=20/home-page=20=E2=86=92=20/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previous state: '/' was 307-redirected to '/home-page', and the home-page route declared canonical='/home-page'. Net effect on SEO: Google indexed '/home-page' as the canonical homepage and treated '/' as a transient redirect (no link equity passed). Changes: - next.config.mjs: replace the source:'/' destination:'/home-page' temporary redirect with source:'/home-page' destination:'/' permanent (301). Any existing crawler entry for /home-page now consolidates onto '/'. - src/app/page.tsx (new): re-exports default + metadata from ./home-page/page so '/' serves the homepage directly. No file moves required, no relative-import breakage in the home-page component subtree. - src/app/home-page/page.tsx: canonical and openGraph.url '/home-page' → '/'. The page still builds at /home-page but the 301 above will redirect any hit before render. - src/app/sitemap.ts: drop the duplicate /home-page entry — Google shouldn't be told about a URL that just redirects. --- next.config.mjs | 12 ++++++++---- src/app/home-page/page.tsx | 4 ++-- src/app/page.tsx | 7 +++++++ src/app/sitemap.ts | 1 - 4 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 src/app/page.tsx diff --git a/next.config.mjs b/next.config.mjs index 239bc71..3042b64 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -50,11 +50,15 @@ const nextConfig = { async redirects() { return [ - // Root redirect + // Homepage canonical: '/' is the real route now (src/app/page.tsx + // re-exports from src/app/home-page/page.tsx). The legacy + // /home-page URL gets a 301 permanent redirect to '/' so any + // crawler entry for /home-page consolidates link equity onto + // the canonical root. { - source: '/', - destination: '/home-page', - permanent: false, + source: '/home-page', + destination: '/', + permanent: true, }, // WordPress admin redirects for broadcastbeat.com (301 permanent) { diff --git a/src/app/home-page/page.tsx b/src/app/home-page/page.tsx index 2a8d21b..90c5403 100644 --- a/src/app/home-page/page.tsx +++ b/src/app/home-page/page.tsx @@ -16,12 +16,12 @@ export const metadata: Metadata = { title: 'Broadcast Beat — Broadcast Engineering News & Insights', description: 'The digital platform for broadcast engineering professionals. Breaking news, deep-dive features, and industry spotlights from NAB to IBC and beyond.', alternates: { - canonical: '/home-page', + canonical: '/', }, openGraph: { title: 'Broadcast Beat — Broadcast News', description: 'Breaking news and insights for broadcast engineering professionals.', - url: '/home-page', + url: '/', type: 'website', images: [ { diff --git a/src/app/page.tsx b/src/app/page.tsx new file mode 100644 index 0000000..b546f23 --- /dev/null +++ b/src/app/page.tsx @@ -0,0 +1,7 @@ +// Canonical homepage at '/'. +// Content is defined in ./home-page/page.tsx (kept there to avoid +// breaking the relative imports its components depend on). The legacy +// /home-page URL still resolves but 301-redirects here via the +// next.config.mjs redirects() block. +export { default } from "./home-page/page"; +export { metadata } from "./home-page/page"; diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts index dc6c944..8939bc0 100644 --- a/src/app/sitemap.ts +++ b/src/app/sitemap.ts @@ -47,7 +47,6 @@ async function listEventSlugs(): Promise<{ slug: string; updated_at: string }[]> export default async function sitemap(): Promise { const staticPages: MetadataRoute.Sitemap = [ { url: `${BASE_URL}/`, lastModified: new Date(), changeFrequency: 'daily', priority: 1.0 }, - { url: `${BASE_URL}/home-page`, lastModified: new Date(), changeFrequency: 'daily', priority: 1.0 }, { url: `${BASE_URL}/news`, lastModified: new Date(), changeFrequency: 'hourly', priority: 0.9 }, { url: `${BASE_URL}/gear`, lastModified: new Date(), changeFrequency: 'daily', priority: 0.8 }, { url: `${BASE_URL}/technology`, lastModified: new Date(), changeFrequency: 'daily', priority: 0.8 },