2015-02-14 6 views
5

Sto cercando di utilizzare .htaccess su CodeIgniter, ma non sta funzionando.Codeigniter Htaccess e l'URL di reindirizzamento emette

Ho già impostato:

AllowOverride All 
$config['index_page'] = ''; 
$config['uri_protocol'] = 'REQUEST_URI'; 

sto usando XAMPP su Windows.

mio .htaccess:

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

mio URL contiene ancora index.php e, se provo a rimuoverlo manualmente, restituisce un errore 404

anche l'altra mia preoccupazione è la mia pagina di login: ogni volta che faccio il login , il mio URL è bloccato sulla pagina di controllo.

Mi chiedevo come faccio a riscrivere il mio URL per passare alla home page invece di stare sulla pagina di controllo.

public function check(){ 
     $this->load->model('check'); 
     $logcheck = $this->check->check($this->input->post('username'),$this->input->post('password')); 

     if($logcheck == "admin"){ 
      $this->load->view('home'); 
     }else{ 
      $this->load->view('login'); 
     } 
    } 
+0

Ho ottenuto l'htaccess per funzionare trasferendolo dalla cartella dell'applicazione alla mia cartella principale. chiedo perché lo mettono lì se hai bisogno di spostarlo comunque – magicianiam

+0

Ogni cartella ha il proprio file htaccess che impedisce il crowling di cartelle particolari (di sistema) come l'applicazione o il sistema. Puoi lasciarlo lì con il contenuto così com'è. Per la cartella root è necessario creare un file .htaccess molto personale. – Tpojka

+0

Quale URL si ottiene attualmente dopo il login e quale URL si aspettava –

risposta

3

Questo semplice .htaccess rimuoverà l'indice.php

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

Cambia la tua funzione di controllo come questo

public function check(){ 
    $this->load->model('check'); 
    $logcheck = $this->check->check($this->input->post('username'),$this->input->post('password')); 

    if($logcheck == "admin"){ 
     //may be you need to set login credential into session 
     redirect('Phonebook/home/'); 
     //$this->load->view('home'); 
    }else{ 
     $this->load->view('login'); 
    } 
} 

e la vostra funzione di casa sarà come questo

public function home(){ 
     //remember you need to check login validation from session 
     $this->load->view('home'); 
} 

di utilizzare la funzione redirect ricordati che hai url aiutante caricato.
Potrebbe essere questo un aiuto

+0

Grazie, woks great, question though posso rimuovere il controller dall'URL usando htaccess? – magicianiam

+0

È possibile utilizzare route codeigniter per questo –

+0

puoi indirizzarmi a un esempio? grazie e molto apprezzato :) – magicianiam

0

Ho scoperto che se si va a questo posto qui http://www.insiderclub.org/downloads e quindi fare clic sul link "ECCO" scaricare la cartella .htaccess zip ci sono circa 5 diversi quelli adatti per codeigniter per .htaccess

non so dove questo AllowOverride All entra in gioco?

anche

$config['uri_protocol'] = 'REQUEST_URI';

Fai

$config['uri_protocol'] = 'AUTO';

$config['base_url'] = 'http://localhost/yourproject/';

$config['index_page'] = '';

Assicuratevi di aver configurato il route.php

principale radice .htaccess. Non è necessario a toccare l'altra .htaccess

Il primo si trova a zip è questo uno

Options +FollowSymLinks 
Options -Indexes 
DirectoryIndex index.php 
RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

sembra funzionare bene con la mia XAMPP e CodeIgniter 2 & 3 ma provate quelli sulla scaricare .

Questa è la seconda nella cartella zip per .htaccess pensare di più per WAMP ecc

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    #Removes access to the system folder by users. 
    #Additionally this will allow you to create a System.php controller, 
    #previously this would not have been possible. 
    #'system' can be replaced if you have renamed your system folder. 
    RewriteCond %{REQUEST_URI} ^system.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #When your application folder isn't in the system folder 
    #This snippet prevents user access to the application folder 
    #Submitted by: Fabdrol 
    #Rename 'application' to your applications folder name. 
    RewriteCond %{REQUEST_URI} ^application.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #Checks to see if the user is attempting to access a valid file, 
    #such as an image or css document, if this isn't true it sends the 
    #request to index.php 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

<IfModule !mod_rewrite.c> 
    # If we don't have mod_rewrite installed, all 404's 
    # can be sent to index.php, and everything works as normal. 
    # Submitted by: ElliotHaughin 

    ErrorDocument 404 /index.php 
</IfModule> 
+0

Ancora non funziona. – Paritosh

+0

Non hanno funzionato per me. – Tung