Лучший метод для URI Маршрутизация это в CodeIgniter? - PullRequest
0 голосов
/ 23 июня 2010

Итак, вот пример на Forrst, сайте CodeIgniter:

http://forrst.com/posts/PHP_Nano_Framework_WIP_Just_throwing_some_ideas_o-mU8

Посмотрите на этот красивый URL. У вас есть корневой сайт, затем posts, затем заголовок и краткая выдержка. Это очень круто для пользователя.

Однако, URL моего сайта CodeIgniter просто отстой. Е.Г.

http://mysite.com/code/view/120

Таким образом, он обращается к контроллеру code, затем к функции view, затем к концу 20 указывается идентификатор сообщения (и он выполняет запросы к базе данных на основании этого).

Я понял, что могу сделать некоторую маршрутизацию. Итак, в моем файле rout.php я поместил следующее:

$route['posts/(:num)'] = "code/view/$1"; - так что http://mysite.com/posts/120 будет таким же, как http://mysite.com/code/view/120. Немного приятнее, я думаю, вы согласитесь.

У меня вопрос - как я могу использовать технику, аналогичную Forrst, при которой выдержка из поста фактически добавляется к URL? Я не могу понять, как это возможно. Как скрипт PHP может определить, что он должен искать в базе данных, особенно если есть несколько вещей с одинаковым названием?

Спасибо!

Jack

Ответы [ 3 ]

2 голосов
/ 23 июня 2010

Чтобы получить URL, как в вашем примере, вам нужно добавить правило маршрутизации, как вы уже сделали $route['posts/(:num)'] = "code/view/$1";.URL-адрес Форрста кажется «отображенным» (или что-то в этом роде), я думаю, что последняя часть URI - это идентификатор (o-mU8 выглядит как хеш, но я предпочитаю int id), который хранится в БД,если он запрашивает, он разделяет URI с помощью ndashes (_) и получает последнюю его часть, например, в рамках действия вашего контроллера:

$elements = explode('_',$this-uri-segment(2));
$identifier = $elements[count($elements)-1];

$results = $this->myModel->myQuery($identifier);

В основном строка между контроллером / и идентификаторомабсолютно бесполезно, но не в том случае, если ваша цель - улучшить SEO.

Надеюсь, это поможет

0 голосов
/ 02 июля 2010

У помощника по URL в codeigniter есть вызов функции url_title (). Я сам этим не пользовался, но думаю, это то, что вы ищете.

0 голосов
/ 23 июня 2010

См. официальные заявления . Термин, который часто связан с этим, является " slug " Сам не проверял подход с форумов CI, но предложения и примеры выглядят неплохо.

...