Codeigniter первая попытка

Я новичок в MVC и Codeigniter, но у меня что-то работает, хотя и не так, как хотелось бы, и мне интересно, может ли кто-нибудь мне помочь?

У меня есть 2 страницы на моем веб-сайте (лига, игроки) в подкаталоге codeigniter, и в настоящее время мой URL-адрес для доступа к ним: «http://www.mydomain.co.uk/codeigniter/index.php/golf' и 'http://www.mydomain.co.uk/codeigniter/index.php/players'

1) Как удалить index.php из URL-адреса? Я пробовал $config['index_page'] = ''; в config/config.php и установите файл .htaccess, но не повезло.

2) Я хочу только указать свой контроллер по умолчанию в route.php на контроллер гольфа и позволить контроллеру обрабатывать любую запрашиваемую страницу.

3) Правильно ли я это настроил, а если нет, то как правильно? Один контроллер подходит?

.htaccess

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ codeigniter/index.php/$1 [L]

config/routes.php

$route['default_controller'] = 'golf';
$route['players'] = 'golf/players'; <-Don't really want this entry!

config/autoload.php

$autoload['libraries'] = array('database');
$autoload['helper'] = array('url');

контроллеры/golf.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

  class Golf extends CI_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function index() {
       $this->load->model('league_model');
       $data['league'] = $this->league_model->get_League();
       $data['title'] = 'League Table';

       $this->load->view('templates/header', $data);
       $this->load->view('templates/menu');
       $this->load->view('league', $data);
       $this->load->view('templates/footer');
    }

    public function players() { //Runs because of entry in config/routes.php
        $route['players'] = 'golf/players';
        $data['title'] = 'Players';

        $this->load->view('templates/header', $data);
        $this->load->view('templates/menu');
        $this->load->view('players', $data);
        $this->load->view('templates/footer');
    }

  }

?>

модели/league_model.php

<?php

  class League_model extends CI_Model {

    public function __construct() {

    }

    public function get_League() {
      $this->db->from("player");
      $this->db->order_by("name", "asc");
      $query = $this->db->get(); 
      return $query->result_array();
    }

  }

?>

views/league.php

<p><?php echo $title; ?></p>
<?php foreach ($league as $item): ?>
    <p><?php echo $item['name']." : ".$item['handicap']." : ".$item['bbnetbirdie']." : ".$item['bb4p'] ?></p>
<?php endforeach ?>

views/players.php

<p>This is players</p>

person user1753622    schedule 03.07.2013    source источник


Ответы (2)


Вы .htaccess должны выглядеть вот так

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase codeigniter/

 RewriteCond %{REQUEST_URI} ^system.*
 RewriteRule ^(.*)$ /index.php?/$1 [L]

 RewriteCond %{REQUEST_URI} ^application.*
 RewriteRule ^(.*)$ /index.php?/$1 [L]

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

А в конфиге $config['index_page'] = ''; это идеально

person M Khalid Junaid    schedule 03.07.2013
comment
Спасибо dianuj за вашу помощь. Я внес эти изменения и использовал URL-адрес mydomain.co.uk/codeigniter/golf или mydomain.co.uk/codeigniter/players, и я получаю сообщение об ошибке 404. запрошенный URL /index.php не найден на этом сервере. Любые идеи? - person user1753622; 03.07.2013
comment
У меня есть следующее в моем .htaccess: RewriteBase /kt2008/ и kt2008 будет моим эквивалентом вашей папки с гольфом, поэтому я добавлю гольф в вашу RewriteBase. - person PmanAce; 03.07.2013
comment
Изменил RewriteBase /codeigniter/ в моем .htaccess, и теперь он работает как удовольствие. Большое спасибо PmanAce и dianuj. Сэкономлено много часов :о) - person user1753622; 03.07.2013
comment
Я надеялся удалить $route['players'] = 'golf/players'; из config/routes.php и пусть контроллер по умолчанию обрабатывает любую страницу, которую я создаю, потому что в данный момент мне нужно добавить любую новую страницу, которую я создаю, в route.php. Ведь это возможно? - person user1753622; 03.07.2013

Я использую простой файл .htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 

и в файле config.php, удалив любую ссылку на index.php

$config['index_page'] = ''
person Dave    schedule 03.07.2013