我在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。
答案 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();
}
然后在名为“注册”的方法中执行所有操作。这将有助于为将来可能处理此代码的其他开发人员保持清晰。