Как сделать URL похожим на domain.com/<article-name> в CodeIgniter

У меня есть контроллер статей и функция просмотра в нем, чтобы показать отдельную статью, так что мои URL-адреса как

http://domain.com/articles/view/<article-id>/<article-title>

Мой код:

class Articles extends CI_Controller {  
   function view($id=NULL,$slug=""){
        //Code to fetch article details from DB by id
    }
}

Как это делает мой URL выглядеть http://domain.com/<article-title>

Благодарю вас.

2 ответа

Решение

Определите все контроллеры в конфигурации маршрутов, обращаясь к их собственным методам. В конце конфигурации маршрутов добавьте следующее правило -

$route['(:any)']   = 'articles/view/$1';

Все запросы, отличные от ранее определенного маршрута, теперь будут обслуживаться artcile/view Контроллер метод.

Следующая часть - создание таблицы сопоставления, которая будет отображать заголовки статей и их идентификаторы. Вы можете получить название статьи с

$this->uri->segment(1);

в view функция.

Всякий раз, когда статья обновляется заголовком, обновляйте также таблицу сопоставлений.

Я сделал то же самое для своего блога. @Varun Согласно комментарию Сачина, это подчеркнутый путь маршрутизации domain.com/articles/view/, на самом деле вы увидите URL как domain.com/, как и ожидалось.

Также я продлил для уровня URL, как это

$route['spring/(:any)'] = "controller_name/method_name/$1";
$route['hibernate/(:any)'] = "controller_name/method_name/$1";

Таким образом, фактический URL выглядит так

domainname.com/spring/spring-jdbc-example which is mapped to  "controller_name/method_name/$1"
Другие вопросы по тегам