Не виждам смисъл да преоткриваш топлата вода
Ако все пак държиш да го правиш, след като сплитнеш URL-а се движи отзад напред. HTTP протокола има достатъчно удобен начин за предаване на параметри. Тази част arguments от адреса е напълно излишна. Аргументите предполагат променлив брой, понякога въобще може да ги няма. Това само ще ти усложни парсването.
Ако масивът има само един елемент ползваш дифолъен контролер и метод.
Ако масивът е с два елемента последния е контролера.
При 3 или повече елементи. Взимаш последните два и дерзаеш.
Този shift е тежка и безмислена операция.
Преди време правих рутер за Node.js Стратегията ми беше следната. Регистрирам обект за определен URL. Структурата беше хеш таблица. При рикуестване на URL проверявах дали имам слушател. Ако имам извиквам `index` метода му.
Ако нямам, рутера връщаше 404.