CodeIgniter использует index.php - PullRequest
       0

CodeIgniter использует index.php

0 голосов
/ 04 октября 2011

У меня установлен codeigniter в папке root / igniter.

под root / igniter, у меня есть следующий файл .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/system.*
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?/$1 [L]

Страницы открываются так, как я ожидал, без использования index.php. Итак, моя домашняя страница находится на http://example.com/igniter, а также открывается моя регистрационная страница на http://example.com/igniter/registration.

Однако в моей регистрационной форме кнопка отправки, которая обрабатывается контроллером CI, перенаправляет на

http://example.com/igniter/index.php/registration

Я убедился, что мой config.php в папке apps / config имеет

$config['index_page'] = "";

Вот так выглядит мой контроллер регистрации:

public function index()
    {
        $this->load->helper(array('form', 'url'));
        $this->load->model('Registration_Model');       
        $this->load->library('form_validation');
        $this->form_validation->set_error_delimiters('<div class="error">', '</div>');

        $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]|callback_username_check|xss_clean');
        $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[6]|max_length[12]|matches[passconf]');
        $this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required');
        $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|callback_email_check');

        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('registration');
        }
        else
        {
            //input data into database here
            $username = strtolower($_POST['username']);
            $password = md5($_POST['password']);
            $email = strtolower($_POST['email']);

            $data = array
                    (
                        'username' => $username,
                        'password' => $password,
                        'email' => $email
                    );

            $this->Registration_Model->addUser($data);  
            $this->load->view('registrationsuccess');
        }
    }

Насколько я вижу, я не прошу явно перенаправить контроллер на index.php / registration.

Ответы [ 2 ]

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

Используйте это в вашем файле .htaccess:

RewriteEngine on

RewriteCond $1 !^(index\.php|robots\.txt|images|css|js|user_guide)
RewriteRule ^(.*)$ /index.php/$1 [L]

Обратите внимание на строку RewriteRule в моем коде.Здесь нет ?пометить как вы использовали.В RewriteCond вы можете использовать столько папок, сколько хотите, и указанные папки имеют доступ.CodeIgniter не может получить доступ к ресурсу из любой папки, которая не указана здесь в RewriteCond.

0 голосов
/ 03 октября 2012

Вы также должны указать свой метод индекса на метод, который вы хотите получить. Например, если ваш класс "Регистрация", ваш метод индекса должен выглядеть следующим образом:

public function index()
{
    this->registration();
}

Затем сделайте все в методе, называемом «регистрация». Это поможет прояснить ситуацию другим разработчикам, которые могут работать над этим кодом в будущем.

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