Переменные URL первого сегмента Codeigniter - PullRequest
0 голосов
/ 04 августа 2010

Я хочу использовать схему сокращения URL, где я хотел бы, чтобы переменная была в первом сегменте URL, www.example.com/0jf08h204. Мой контроллер по умолчанию - "home.php", и у меня есть .htaccess mod-rewrits на месте, так как лучше всего это сделать? Я предполагаю, что мои смарты были заблокированы стандартной схемой / контроллером / методом / переменной, это настройка протокола URI? Спасибо!

Ответы [ 3 ]

4 голосов
/ 04 августа 2010

Чтобы добавить к ответу Мэтью.

Это то, что вам нужно в вашем system/application/config/routes.php файле:

$route['(:any)'] = "home";

Это перенаправит ВСЁ.

Выможет не захотеть перенаправлять все, если у вас есть другие контроллеры, которые вам нужно использовать.Если это так, вы можете использовать вместо этого регулярное выражение:

$route['^(?!about|contact)\S*'] = "home";

Это позволит вам перенаправить все, кроме контроллеров «о» или «контакт» - они будут направлены на «о».Контроллеры php 'и' contact.php '.

Обратите внимание, я предпочитаю не использовать подстановочные знаки в CodeIgniter, вы можете обнаружить, что они работают лучше для вас, однако я решил разобрать $ _SERVER ['REQUEST_URI '] вручную после перенаправления.Однако, если вы хотите использовать подстановочные знаки, вы просто добавите /$1 к маршрутам, как вы видите в ответе Мэтью.

1 голос
/ 04 августа 2010

Я сам не очень много играл с Routing , но я думаю, что вы можете попробовать что-то вроде этого:

$route['(:any)'] = "controllername/actionname/$1";

Хотя сам не пробовал.

0 голосов
/ 04 августа 2010

Ну, хотя кажется, что это не совсем нормально для внесения в белый список определенных областей, и я все еще думаю о том, как обрабатывать 404 ошибки, вот метод, который сейчас работает с использованием регулярного выражения из evolve.Мой файл контроллера home.php:

Класс Home расширяет контроллер {

function Home()
{
    parent::Controller();
    $uri = uri_string();
    if(!empty($uri))    {
        $uri_array = explode('/',$uri);
        $first_segment = $uri_array[1];
        if(isset($first_segment))   {
            //do stuff, load alternative view
        }
    }
}

function index()
{
    $this->load->view('home_view');
}

}

/ * EOF * /

Спасибо запомощь, пожалуйста, отправьте альтернативные soln, если таковые имеются.

...