2.3 KiB
2.3 KiB
Auto Locale Routing
Sistem auto routing locale telah diimplementasikan untuk memastikan bahwa semua URL otomatis memiliki prefix locale.
🚀 Cara Kerja:
1. Middleware (Server-side)
- File:
middleware.ts - Fungsi: Menangani redirect di server-side sebelum halaman dimuat
- Logika:
- Jika URL tidak memiliki prefix locale (
/in,/en,/ar) - Maka akan otomatis redirect ke
/in+ path yang diminta - Contoh:
/admin/dashboard→/in/admin/dashboard
- Jika URL tidak memiliki prefix locale (
2. Auto Redirect Component (Client-side)
- File:
components/auto-redirect.tsx - Fungsi: Fallback untuk client-side redirect jika middleware tidak bekerja
- Logika: Menggunakan
useRouteruntuk redirect di browser
3. Root Pages
- File:
app/page.tsxdanapp/layout.tsx - Fungsi: Menangani akses ke root path tanpa locale
- Logika: Menggunakan
AutoRedirectcomponent
📋 Contoh Redirect:
| URL yang diakses | URL hasil redirect |
|---|---|
/ |
/in |
/admin/dashboard |
/in/admin/dashboard |
/content/image |
/in/content/image |
/settings |
/in/settings |
⚙️ Konfigurasi:
Default Locale:
const defaultLocale = "in";
Supported Locales:
const locales = ["in", "en", "ar"];
Middleware Matcher:
matcher: ['/((?!api|_next|_static|.*\\..*).*)']
🔧 Fitur:
- ✅ Server-side redirect (lebih cepat)
- ✅ Client-side fallback (lebih reliable)
- ✅ Skip redirect untuk API routes dan static files
- ✅ Preserve query parameters saat redirect
- ✅ SEO friendly dengan proper HTTP redirect codes
🎯 Keuntungan:
- User Experience: User tidak perlu mengetik prefix locale
- SEO: Search engine akan selalu mendapat URL dengan locale
- Consistency: Semua URL memiliki format yang konsisten
- Fallback: Jika server-side redirect gagal, client-side akan menangani
- Performance: Redirect terjadi sebelum halaman dimuat
🚨 Catatan Penting:
- Middleware akan menangani sebagian besar kasus
- Auto Redirect component hanya sebagai fallback
- Pastikan semua route sudah ada di
app/[locale]/directory - Test dengan berbagai URL untuk memastikan redirect bekerja