28
01
10
C’est en migrant certaines applis web de ma boite vers un serveur dédié que je me suis rendu compte que l’url rewritting avec Code Igniter ne fonctionnait plus, l’erreur suivante apparaissant constament dès lors que je tentais d’entrer une url sans index.php avant le controller :
No input file specified
J’adore tellement Code Igniter, que je trouve plus souple que CakePhp et compagnie, qu’il n’était pas question de changer de framework Php, d’autant plus que rien ne laissait croire que le problème ne se serait pas produit avec les autres Framework. Ca et puis le fait que les applis en question font déjà un bon petit paquet de lignes par controleurs.
Après une petite recherche, je pensais en finir rapidement avec l’erreur. Il s’agit à priori de modifier le htaccess afin d’ajouter un point d’interrogation après index.php :
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php?/$1 [L]
C’était sans compter sur le fait que je bosse sous Aptana, qui, d’humeur joyeuse, m’a fait tourner en bourrique pendant une bonne heure. Je modifiais le htaccess à distance, mais ça n’avait aucun effet… je me suis alors rendu compte que les modifications effectuées sur le htaccess n’étaient pas sauvegardée, et qu’aucune erreur dans les logs n’apparaissait.
Il suffit donc de creer le htaccess en local et de l’uploader avec un client FTP pour écraser le précédent fichier.
Et là, boum, nouveau problème : j’utilise parfois des points dans l’url (notamment parce que je passe certaines références en segment que je récupère un peu à la façon d’un $_GET, soit $this->uri->segment() avec Code Igniter). Les références en questions étaient à chaque fois modifiée, du moins, les points ( . ) étaient remplacés par des underscore ( _ ), ce qui rendait les trois quarts de mon code inutilisable.
Pour corriger le problème, il faut modifier le fichier config (system/application/config/config.php) suivant :
$config['uri_protocol'] = "AUTO";
Par ceci :
$config['uri_protocol'] = "REQUEST_URI";
Et zou, un mars et ça repart.
Dans le même genre...