если брать laravel, то за определение "на какой странице мы находимся" ответственен роутинг.
Если ты делаешь многоуровневую страничную структуру, то ее полный url надо вычислять на этапе создания и хранить, а не заниматься вычислениями при обращении.
например у тебя есть страницы page1, page2, page3, page4 причем page2, page3 - дочерние для page1, а page4 - дочерняя для page3
вычисленные URL будут page1, page1/page2, page1/page3, page1/page3/page4
а в роутинге ты просто описываешь get('/prefix/{slug}')
например так:
Route::get('/p/{slug}', ['as' => 'page_by_slug', 'uses' => 'FrontController@page_by_slug'])->where('slug', '[A-Za-z0-9][A-Za-z0-9/_-]+');
а это для чисел
Route::get('/~{id}', ['as' => 'page_by_id', 'uses' => 'FrontController@page_by_id']);