# Routing CI3 vs CI4

## CI3 (`application/config/routes.php`)

- `default_controller` = `site`
- `404_override` = `errors/page_missing`
- Pola bahasa URL: `^(\w{2})/(.*)$` → segment berikutnya
- Pola REST modul `api`: `api/(:any)/(:num)` → `api/$1/id/$2` (CI Bootstrap + codeigniter-restserver)

**`Json` controller:** tidak didefinisikan eksplisit; mengikuti routing default `controller/method` → `/json/login`, dll.

## CI4 (`app/Config/Routes.php`)

| Kebutuhan | Rute |
|-----------|------|
| Beranda default | `GET /` → `Home::index` |
| Admin (foundation) | `GET /admin` → `Admin\Dashboard::index` |
| API mobile (utama) | `POST /api/mobile/{method}` → `Api\MobileJsonController::{method}` |
| **Alias kompatibilitas CI3** | `POST /json/{method}` → handler yang sama |

## Strategi cutover

1. Deploy CI4 di hostname/subpath terpisah; uji parity respons per endpoint.
2. Alihkan aplikasi mobile ke base URL CI4; gunakan **`/json/*`** agar path relatif sama dengan CI3 (tanpa mengubah path di kode klien jika sebelumnya `/index.php/json/...`).
3. Setelah stabil, opsional: standarkan ke `/api/mobile/*` dan hentikan CI3 untuk endpoint tersebut.

## Catatan `index.php`

CI3 sering memakai `index.php` di URL; CI4 `public/index.php` + rewrite. Samakan konfigurasi web server (Apache/Nginx) agar `baseURL` di `.env` sesuai.
