Enrutamiento CMS en MVC

Estoy creando mi propio framework MVC en PHP como un medio para aprender programación más avanzada. Tengo el marco operativo en funcionamiento, pero tengo un problema relacionado con el método de enrutamiento actual. Quiero que el marco sea compatible con un CMS de fondo para complementar el sitio web de front-end. El problema es que mi estructura de enrutamiento funciona así:mywebsite.com/controller/method/id El motor de enrutamiento ordena la información en una matriz como esta

segments 0 => controller, 1 => method, 2 => id

Ahora mismo, si visito mywebsite.com/projects, me lleva a lo que he configurado como una página de administración. No solo quiero que esto sea accesible solo desde mywebsite.com/admin/projects, quiero que mywebsite.com/projects me lleve a la interfaz.

Así que si quiero visitarmywebsite.com/projects Me gustaría que renderice el controlador "frontal", presionando "proyectos" en el método. Si yo visitomywebsite.com/admin/projects Me gustaría cargar el controlador de proyectos.

Aquí está la clase de enrutamiento actual en su totalidad de la siguiente manera.

<?php

class Request {

    //url domain.com/controller/method/other
    //holds url segments 0 => controller, 1 => method, 2 => other, etc
    public $segments;
    function  __construct() {
        $this->parse_globals();
    }

    function parse_globals(){
        //$uri = preg_replace("|/(.*)|", "\\1", str_replace("\\", "/", $_SERVER['REQUEST_URI']));
        $uri = (empty($_GET['rt'])) ? '' : $_GET['rt'];
        $this->segments = array_filter(explode('/', $uri));
        if (in_array("admin", $this->segments)) {
            array_shift($this->segments);
        }
        print_r($this->segments);
        //remove index php
        if( reset($this->segments) == 'index.php') {
            array_shift ($this->segments);
        }
    }

    function controller(){
        return $this->segment(0);
    }

    function method(){
        return $this->segment(1);
    }

    function param( $str ){
        return isset($_REQUEST[$str]) ? $_REQUEST[$str] : false;
    }

    function segment( $no ){
        return isset($this->segments[$no]) ? $this->segments[$no] : false;
    }
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta