Можно решить при помощи конфигурфции Apache / nginx так что входящи запрос вида GET /user/id/1 будет передавать в PHP запрос вида /user.php?id=1 GET и т.д.
То есть раутинг из кода переносим на сторону сервера.
Достоинства: не нужно переписывать код, старые линки продолжают работать
Недостатки: изменение раетинга требует рестарт сервера