Домашняя страница настройки Codeigniter (контроллер по умолчанию)

Я пытаюсь внедрить шаблоны страниц в моем приложении codeigniter, тем не менее, templating работает нормально, у меня есть страница блога, которую я пытаюсь назначить своей домашней страницей, с другим видом и разбиением на страницы и так далее. Когда я пишу www.mywebsite.com/blog, он открывается на домашнем шаблоне или предполагает, что у меня есть страница www.mywebsite.com/about, она также открывается в шаблоне страницы. Но когда я пытаюсь получить доступ к моему сайту через www.mywebsite.com, у меня есть страница ошибки 404. Как я могу назначить страницу своего блога в качестве главной страницы?

Контроллер страницы:

class Page extends Frontend_Controller { public function __construct(){ parent::__construct(); $this->load->model('page_m'); } public function index() { // Fetch the page template $this->data['page'] = $this->page_m->get_by(array('slug' => (string) $this->uri->segment(1)), TRUE); count($this->data['page']) || show_404(current_url()); add_meta_title($this->data['page']->title); add_meta_keyword($this->data['page']->keywords); add_meta_description($this->data['page']->description); // Fetch the page data $method = '_' . $this->data['page']->template; if (method_exists($this, $method)) { $this->$method(); } else { log_message('error', 'Could not load template ' . $method .' in file ' . __FILE__ . ' at line ' . __LINE__); } // Load the view $this->data['subview'] = $this->data['page']->template; $this->load->view('_main_layout', $this->data); } private function _page(){ // methods } private function _homepage(){ // methods } } 

в моих Маршрутах я установил свой контроллер по умолчанию для управления страницей

 $route['default_controller'] = "page"; 

Проблема в том, что нет сегмента URI, когда вы посещаете сайт www.mywebsite.com . Вы можете попробовать установить значение по умолчанию как:

 $this->uri->segment(1 , 'blog') 

приложение / Config / routes.php

 $route['default_controller'] = 'namecontroller'; 

Ваш код

 // Fetch the page template $this->data['page'] = $this->page_m->get_by(array('slug' => (string) $this->uri->segment(1)), TRUE); count($this->data['page']) || show_404(current_url()); 

код сегмента uri

 $this->uri->segment(1) 

ищет первый сегмент URL, когда вы просматриваете свой сайт, например, http://www.yousite.come / blog, он будет работать, но когда вы делаете http://www.yoursite.com 1-й сегмент uri отсутствует, поэтому он вернет false, поэтому я покажу 404 страницы.

Решение. Вы можете просто добавить второй параметр к функции типа

 $this->uri->segment(1,'blog'); 

теперь, если первый сегмент URL отсутствует, он не вернет false, он вернет default vladue 'blog'

Для получения дополнительной информации об этом вы можете увидеть документацию по кодированию