CodeIgniter, Aruba e .htaccess

Chi utilizza Aruba per i propri progetti realizzati in CodeIgniter, si sarà trovato sicuramente di fronte al fatidico messaggio di errore “No input file specified”.

Innanzitutto specifichiamo che la nostra versione di PHP deve essere almeno la 5.3.
Detto cio’, cerchiamo di capire come far funzionare correttamente la nostra piattaforma.

Il problema sta nella cattiva interpretazione delle URL, le quali, non venendo “intercettate” nel modo corretto, non fanno funzionare nel modo opportuno il mod_rewrite di Apache.

La cosa anomala è che omettendo la dicitura “index.php” all’interno delle URL e attivando la funzionalità di riscrittura di Apache, tutto funziona correttamente.

Come risolvere questa situazione?

Impostiamo il file .htaccess, presente nella root del nostro progetto, in questo modo:


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

La differenza fondamentale rispetto ad un “normale” mod_rewrite sta nella presenza del ? dopo ogni index.php. Questa permette di intercettare e quindi di interpretare in maniera corretta la URL.

Come ultima cosa, assicuariamoci che il file config.php (presente nella cartella application/folder) alla riga 29 abbia questa impostazione: $config[‘index_page’] = ”;.

Hai bisogno di consulenza su questo argomento?