Как сделать 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"