CodeIgniter使用index.php

时间:2011-10-04 15:28:25

标签: codeigniter

我在root / igniter文件夹中安装了codeigniter。

在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

我确保application / config下的config.php有

$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 个答案:

答案 0 :(得分:1)

在.htaccess文件中使用此项:

RewriteEngine on

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

请注意我的代码中的RewriteRule行。没有?你用的标记。在RewriteCond中,您可以使用任意数量的文件夹,并且所提到的文件夹可以访问。 CodeIgniter无法从此处未在RewriteCond中列出的任何文件夹中访问资源。

答案 1 :(得分:0)

您还应该将索引方法指向要接收它的方法。例如,如果您的类是“注册”,则您的索引方法应如下所示:

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

然后在名为“注册”的方法中执行所有操作。这将有助于为将来可能处理此代码的其他开发人员保持清晰。