Предположим, у вас есть что-то вроде:
/blog/post/some-post-title
Ну, это нормально. some-post-title
существует, и все работает.
Теперь предположим, что у нас есть /blog/post/123
, где 123 не существует. Что ж, мы можем либо настроить наш типичный 404 (предпочтительный и автоматический), либо сделать что-то еще;что звучит как то, что вы хотите.
В этом случае все, что нам нужно сделать, это проверить, существует ли, во-первых, что-нибудь после /post/
и действительно ли в таблице базы данных есть слаг или идентификатор.
class Blog extends CI_Controller {
public function post($slug = null) {
if (is_null($slug) || $this->blog_model->exists($slug)) {
redirect('/blog');
}
... load your views... whatever
}
}
class Blog_model extends CI_Model {
public function exists($slug) {
$this->db->where('slug', $slug);
return $this->db->count_all_results('blog_db_table') == 1;
}
}
Очевидно, вам придется адаптировать это к вашей конкретной схеме.