Игнорирование _remap Codeigniter для определенных URL-адресов? - PullRequest
0 голосов
/ 05 сентября 2011

Я использую функцию _remap Codeigniter для переназначения всех URL-адресов на www.website.com. Это работает в 99% случаев, но я хотел бы игнорировать определенные URL-адреса (в частности / admin, / contact, / submit, / top, / browse). Эти URL содержат контент, который я хотел бы отобразить.

Как бы мне этого добиться?

public function _remap($urlname)
{
    if($urlname == "index") {
        // If this is the index, redirect to the most recent startup
        redirect("s/".$this->Startup_model->getMostRecent(), 'refresh');
    } else {
        // If they didn't go to the index, find the startup they were after
        $id = $this->Startup_model->matchName($urlname);

        // Check to see if the name they entered was a real startup, if not redirect to missing page
        if($id == null) {
            $data['urlname'] = $urlname;
            $this->load->view('header/header');
            $this->load->view('content/missing', $data);
            $this->load->view('footer/footer');
        } else {
            // They got the name right!  Load the page...
            $data['values'] = $this->Startup_model->buildStartup($id);

            // If there was no next startup avaiable, pass that info through
            $next = $this->Startup_model->findNext($id);
            if($next == null) {
                $next = '343z61v';
            }

            // If there was no previous startup avaiable, pass that info through
            $previous = $this->Startup_model->findPrevious($id);
            if($previous == null) {
                $previous = '343z61v';
            }

            $data['next'] = $next;  
            $data['previous'] = $previous;

            $this->load->view('header/header');
            $this->load->view('content/startup', $data);
            $this->load->view('footer/footer');
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

Попробуйте это:

function _remap($urlname, $params = array())
{
    if(is_callable(array($this, $urlname))){ //If the function exists, is called, if not using the usual
        return call_user_func_array(array(&$this, $urlname), $params);
    }elseif($urlname == "index") {
            // If this is the index, redirect to the most recent startup
            redirect("s/".$this->Startup_model->getMostRecent(), 'refresh');
    } else {
        // If they didn't go to the index, find the startup they were after
        $id = $this->Startup_model->matchName($urlname);

        // Check to see if the name they entered was a real startup, if not redirect to missing page
        if($id == null) {
            $data['urlname'] = $urlname;
            $this->load->view('header/header');
            $this->load->view('content/missing', $data);
            $this->load->view('footer/footer');
        } else {
            // They got the name right!  Load the page...
            $data['values'] = $this->Startup_model->buildStartup($id);

            // If there was no next startup avaiable, pass that info through
            $next = $this->Startup_model->findNext($id);
            if($next == null) {
                $next = '343z61v';
            }

            // If there was no previous startup avaiable, pass that info through
            $previous = $this->Startup_model->findPrevious($id);
            if($previous == null) {
                $previous = '343z61v';
            }

            $data['next'] = $next;  
            $data['previous'] = $previous;

            $this->load->view('header/header');
            $this->load->view('content/startup', $data);
            $this->load->view('footer/footer');
        }
    }
}

Примечание: Функция index () не должна существовать

1 голос
/ 06 сентября 2011

Итак, вы спрашиваете, как выборочно не переназначать определенные URL? Если это так, добавьте это в ваш оператор if перед else:

else if (in_array($urlname, array('admin', 'contact', 'etc')))
{
    $this->$urlname;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...