Skip to content

Commit f7b3716

Browse files
SEO: Fix canonical URL headache and resolve global hreflang errors across 65+ pages
1 parent a8aa918 commit f7b3716

29 files changed

Lines changed: 549 additions & 6 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { Metadata } from 'next'
2+
3+
export const metadata: Metadata = {
4+
title: '2026 Developer Report: The 10 Most Common JSON Syntax Errors',
5+
description: 'A comprehensive data study on why JSON fails and how modern developers can avoid common syntax pitfalls. Analysis of 1.2M payloads.',
6+
alternates: {
7+
canonical: 'https://wtkpro.site/blog/json-syntax-errors-study/',
8+
languages: {
9+
'en-US': 'https://wtkpro.site/blog/json-syntax-errors-study/',
10+
'x-default': 'https://wtkpro.site/blog/json-syntax-errors-study/',
11+
},
12+
},
13+
}
14+
15+
export default function JsonStudyLayout({
16+
children,
17+
}: {
18+
children: React.ReactNode
19+
}) {
20+
return <>{children}</>
21+
}

app/disclaimer/page.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@ import React from 'react'
33
export const metadata = {
44
title: 'Disclaimer & DMCA - WebToolkit Pro',
55
description: 'Legal disclaimer and DMCA policy for WebToolkit Pro (wtkpro.site). Learn about our content usage and copyright policies.',
6+
alternates: {
7+
canonical: 'https://wtkpro.site/disclaimer/',
8+
languages: {
9+
'en-US': 'https://wtkpro.site/disclaimer/',
10+
'x-default': 'https://wtkpro.site/disclaimer/',
11+
},
12+
},
613
}
714

815
export default function DisclaimerPage() {

app/layout.tsx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,6 @@ const inter = Inter({ subsets: ['latin'] })
1212
export const metadata: Metadata = {
1313
metadataBase: new URL('https://wtkpro.site'),
1414
alternates: {
15-
canonical: '/',
16-
languages: {
17-
'en-US': '/',
18-
'x-default': '/',
19-
},
2015
},
2116
title: 'WebToolkit Pro | 65+ Premium Developer Tools & Expert Guides',
2217
description: 'WebToolkit Pro offers 65+ free premium developer tools and expert guides. Secure, fast, and optimized for enterprise engineering. Format JSON and master SEO.',

app/not-found.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11
import React from 'react'
22
import Link from 'next/link'
3+
import { Metadata } from 'next'
34
import { Home, AlertCircle } from 'lucide-react'
45

6+
export const metadata: Metadata = {
7+
title: '404 - Tool Not Found | WebToolkit Pro',
8+
robots: {
9+
index: false,
10+
follow: true,
11+
},
12+
}
13+
514
export default function NotFound() {
615
return (
716
<div className="min-h-screen flex items-center justify-center bg-gray-50 dark:bg-slate-950 transition-colors duration-300">

app/terms/page.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,14 @@ import React from 'react'
22

33
export const metadata = {
44
title: 'Terms of Service - WebToolkit Pro',
5-
description: 'WebToolkit Pro terms of service and usage agreement for wtkpro.site.'
5+
description: 'WebToolkit Pro terms of service and usage agreement for wtkpro.site.',
6+
alternates: {
7+
canonical: 'https://wtkpro.site/terms/',
8+
languages: {
9+
'en-US': 'https://wtkpro.site/terms/',
10+
'x-default': 'https://wtkpro.site/terms/',
11+
},
12+
},
613
}
714

815
export default function TermsPage() {
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { Metadata } from 'next'
2+
3+
export const metadata: Metadata = {
4+
title: 'AdSense Revenue Estimator | WebToolkit Pro',
5+
description: 'Calculate potential earnings from Google AdSense based on traffic, CTR, and CPC. Analyze revenue impact across different niches.',
6+
alternates: {
7+
canonical: 'https://wtkpro.site/tools/adsense-calculator/',
8+
languages: {
9+
'en-US': 'https://wtkpro.site/tools/adsense-calculator/',
10+
'x-default': 'https://wtkpro.site/tools/adsense-calculator/',
11+
},
12+
},
13+
}
14+
15+
export default function AdSenseLayout({
16+
children,
17+
}: {
18+
children: React.ReactNode
19+
}) {
20+
return <>{children}</>
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { Metadata } from 'next'
2+
3+
export const metadata: Metadata = {
4+
title: 'API Latency Cost Calculator | WebToolkit Pro',
5+
description: 'Analyze the financial impact of network latency on your business revenue. Calculate conversion drops and ROI of performance optimization.',
6+
alternates: {
7+
canonical: 'https://wtkpro.site/tools/api-latency-calculator/',
8+
languages: {
9+
'en-US': 'https://wtkpro.site/tools/api-latency-calculator/',
10+
'x-default': 'https://wtkpro.site/tools/api-latency-calculator/',
11+
},
12+
},
13+
}
14+
15+
export default function ApiLatencyLayout({
16+
children,
17+
}: {
18+
children: React.ReactNode
19+
}) {
20+
return <>{children}</>
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { Metadata } from 'next'
2+
3+
export const metadata: Metadata = {
4+
title: 'Binary to Text & Decimal Converter | WebToolkit Pro',
5+
description: 'Convert between Binary, Decimal, Hexadecimal, and Plain Text. Essential utility for low-level programming and data analysis.',
6+
alternates: {
7+
canonical: 'https://wtkpro.site/tools/binary-converter/',
8+
languages: {
9+
'en-US': 'https://wtkpro.site/tools/binary-converter/',
10+
'x-default': 'https://wtkpro.site/tools/binary-converter/',
11+
},
12+
},
13+
}
14+
15+
export default function BinaryConverterLayout({
16+
children,
17+
}: {
18+
children: React.ReactNode
19+
}) {
20+
return <>{children}</>
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { Metadata } from 'next'
2+
3+
export const metadata: Metadata = {
4+
title: 'Text Case Converter Pro | WebToolkit Pro',
5+
description: 'Instantly transform text into Uppercase, Lowercase, Title Case, Sentence Case, or camelCase. Clean and fast text manipulation tool.',
6+
alternates: {
7+
canonical: 'https://wtkpro.site/tools/case-converter/',
8+
languages: {
9+
'en-US': 'https://wtkpro.site/tools/case-converter/',
10+
'x-default': 'https://wtkpro.site/tools/case-converter/',
11+
},
12+
},
13+
}
14+
15+
export default function CaseConverterLayout({
16+
children,
17+
}: {
18+
children: React.ReactNode
19+
}) {
20+
return <>{children}</>
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { Metadata } from 'next'
2+
3+
export const metadata: Metadata = {
4+
title: 'CDN & Edge Readiness Tester | WebToolkit Pro',
5+
description: 'Inspect HTTP headers and CDN delivery performance. Verify Cache-Control, ETag, and Edge Runtime headers for optimal content delivery.',
6+
alternates: {
7+
canonical: 'https://wtkpro.site/tools/cdn-readiness-tester/',
8+
languages: {
9+
'en-US': 'https://wtkpro.site/tools/cdn-readiness-tester/',
10+
'x-default': 'https://wtkpro.site/tools/cdn-readiness-tester/',
11+
},
12+
},
13+
}
14+
15+
export default function CdnReadinessLayout({
16+
children,
17+
}: {
18+
children: React.ReactNode
19+
}) {
20+
return <>{children}</>
21+
}

0 commit comments

Comments
 (0)