Fix tag URL encoding for non-ASCII characters
Fixed tag matching issue where tags with spaces and non-ASCII characters (like "Medicine - 醫學") were not working correctly on Vercel. Changes: 1. Updated getTagSlug() to normalize tags without encoding - Next.js handles URL encoding automatically 2. Added decodeURIComponent() in tag page to decode incoming URL parameters 3. This ensures proper matching between generated slugs and URL parameters The fix resolves: - Tag archive pages showing wrong characters - Articles not being collected under correct tags - URL display issues with encoded characters 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
10
lib/posts.ts
10
lib/posts.ts
@@ -27,14 +27,14 @@ export function getPageBySlug(slug: string): Page | undefined {
|
||||
}
|
||||
|
||||
export function getTagSlug(tag: string): string {
|
||||
// Normalize spaces and convert to lowercase first
|
||||
// Normalize spaces and convert to lowercase
|
||||
// Replace multiple spaces/dashes with single dash
|
||||
const normalized = tag
|
||||
// Next.js will handle URL encoding automatically, so we don't encode here
|
||||
return tag
|
||||
.toLowerCase()
|
||||
.replace(/\s+/g, '-')
|
||||
.replace(/-+/g, '-');
|
||||
// Encode URI components to handle non-ASCII characters properly
|
||||
return encodeURIComponent(normalized);
|
||||
.replace(/-+/g, '-')
|
||||
.trim();
|
||||
}
|
||||
|
||||
export function getAllTagsWithCount(): { tag: string; slug: string; count: number }[] {
|
||||
|
||||
Reference in New Issue
Block a user