Нумерация страниц с Codeigniter, без функции индекса - PullRequest
0 голосов
/ 10 октября 2011

Например, у меня есть контроллер:

class Users extends CI_Controller
{
    function index()
    {
        $this->load->library('pagination');

        $config['base_url'] = base_url() . 'index.php/users';
        $config['total_rows'] = 55;
        $config['per_page'] = 10;
        $this->pagination->initialize($config); 

        echo $this->pagination->create_links();
    }
}

Тогда нумерация страниц будет:

base_url() . 'index.php/users/10
base_url() . 'index.php/users/20
base_url() . 'index.php/users/30
..

ПРОБЛЕМА

Он отображает ссылки нормально, но когда я нажимаю, он показывает 404. Работает нормально, только если ссылки будут такими (с индексом функции):

base_url() . 'index.php/users/index/10
base_url() . 'index.php/users/index/20
base_url() . 'index.php/users/index/30
..

В любом случае, я не хочу, чтобы пользователи видели адрес с index, что мне делать? Я хочу отменить адрес с индексом + нумерация страниц будет работать без него.

Ответы [ 3 ]

2 голосов
/ 10 октября 2011

Индекс должен быть там, иначе codeigniter не будет знать, какую функцию вызывать (функция «index ()» в вашем контроллере).

Лучше всего использовать маршрутизацию URI.

Добавить что-то вроде этого (не проверено):

$route['users/page/:num'] = "users/index";

В файл "application / config / rout.php"

Однако библиотека разбиения на страницы все еще может добавить индекс, и в этом случаевам нужно будет расширить его или создать свой собственный.Однако использование следующего базового URL может работать:

class Users extends CI_Controller
{
    function index()
    {
        $this->load->library('pagination');

        $config['base_url'] = base_url() . 'index.php/users/page/';
        $config['total_rows'] = 55;
        $config['per_page'] = 10;
        $this->pagination->initialize($config); 

        echo $this->pagination->create_links();
    }
}

Опять же, это не проверено.Извините за непроверенные примеры, но вам определенно понадобится маршрутизация uri, чтобы делать то, что вам нужно, здесь есть дополнительная информация о маршрутизации uri здесь

Для того, чтобы решить любые проблемы SEO со старымЕсли вы работаете, вы можете попробовать любое из следующих действий:

Чтобы перенаправлять каждый раз, когда пользователь выбирает тот формат URI, который вы не хотите отображать, вы можете перенаправить его на правильную версию, поставив это в верхней частиваша функция index () в контроллере пользователей.

$this->load->helper('url');
$current_uri = uri_string();
if(strpos($current_uri, 'users/index'))
{
    $new_uri = str_replace('users/index','users',$current_uri);
    redirect($new_uri);
}

В качестве альтернативы вы можете установить канонический метатег в HTML, это говорит паукам поисковой системы, что, хотя страница, на которую она смотрит, должна рассматриваться как страницав каноническом теге, а не в адресной строке.Узнайте больше о каноническом теге здесь

<link rel="canonical" href="<?php echo site_url('users/'.$page_num); ?>" />

Конечно, вам придется корректировать переменные, как указано выше.

Вы также можете сделать это через htaccess, но безсредства, чтобы проверить это как раз в тот момент, когда я устаю пытаться привести какие-либо примеры.

1 голос
/ 10 октября 2011

попробуйте это:

$route['users'] = "users/index";
$route['users/([0-9]+)] = "users/index/$1";
0 голосов
/ 10 октября 2011

Может быть, вы могли бы попробовать переписать URL в .htaccess?

Хотя точный синтаксис я не помню ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...