2011-10-04 68 views
0

我有codeigniter安裝在root/igniter文件夾中。CodeIgniter使用index.php

下根/點火器,我有以下.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文件有

$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。

+3

我沒有看到任何代碼會在這裏重定向。你確定這個表單的'action'沒有問題嗎?您可能想要顯示您的視圖代碼。 –

回答

1

在你的.htaccess文件中使用此:

RewriteEngine on 

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

注意,在我的代碼重寫規則行。沒有?標記爲你使用的。在RewriteCond中,您可以使用任意數量的文件夾,並可以訪問所提及的文件夾。 CodeIgniter不能從任何未在RewriteCond中列出的文件夾訪問資源。

+0

是的,這是我的.htaccess的一個問題。謝謝 – xbonez

0

您還應該將您的索引方法指向您想要接收它的方法。例如,如果你的類是「登記」索引方法應該是這樣的:

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

然後盡一切調用的方法「註冊」。這將有助於爲未來可能在此代碼上工作的其他開發人員保持清楚。