developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Opened 12 years ago

Closed 12 years ago

#441 closed bug (fixed)

mod_rewrite : No input file specified

Reported by: hugues Owned by:
Priority: normal Milestone: Jelix 1.0.2
Component: jelix:core request Version: 1.0.1
Severity: normal Keywords: php, cgi
Cc: Blocked By:
Blocking: Documentation needed:
Hosting Provider: ovh Php version: php cgi

Description

Sur une distrib ovh, a base de gentoo et de php en cgi avec suphp, la règle de réécriture

RewriteRule ^(.*)$ index.php/$1 [L]

ne passe absolument pas. j'ai l'erreur "No input file specified." J'ai tenter pas mal de chose, y compris "cgi.fix_pathinfo", mais sans aucun effet !

pour l'instant, la solution mis en place ( pourri ) c'est

RewriteRule ^(.*)$ index.php/?q123654=/$1 [L]

avec dans la méthode parse du moteur significant url

 if(isset($_REQUEST['q123654'])) $pathinfo = $_REQUEST['q123654'];

C'est vraiment très laid, mais semble fonctionner.

est il possible d'envisager inclure une règle de réécriture alternative de ce genre dans la config de base ? De maniere plus elegante dans le code, et avec un paramètre dans le defaultconfig.ini.php pour l'activer par exemple ? Sinon pour ceux qui ont une petite experience de jelix, ma modif est elle viable ?

Merci.

Attachments (1)

jRewriteCgiClassicRequest.class.php (418 bytes) - added by hugues 12 years ago.
jRewriteCgiClassicRequest

Download all attachments as: .zip

Change History (6)

comment:1 Changed 12 years ago by laurentj

  • Hosting Provider set to ovh
  • Keywords ovh gentoo removed
  • Resolution set to duplicate
  • Status changed from new to closed
  • Summary changed from No input file specified to mod_rewrite : No input file specified

Problème déjà répertorié : ticket #390. C'est un problème de PHP/CGI/suphp/mod_rewrite, pas de jelix.

Fait ton propre objet request qui récupèrera les infos de q123654.

Et puisqu'apparement c'est un serveur dédié, utilise mod_php si possible. (CGI ça sux au niveau performance).

Totalement HS : utiliser une gentoo sur un serveur... hum... :-p

comment:2 Changed 12 years ago by laurentj

Au fait, il manque le flag QSA à ta rêgle. C'est utile de pouvoir récupèrer les infos de la partie query string ;-)

  RewriteRule ^(.*)$ index.php/?q123654=/$1 [L,QSA]

comment:3 Changed 12 years ago by hugues

  • Resolution duplicate deleted
  • Status changed from closed to reopened

Changed 12 years ago by hugues

jRewriteCgiClassicRequest

comment:4 Changed 12 years ago by laurentj

  • Component changed from jelix to jelix:core request
  • Milestone set to Jelix 1.0.2

comment:5 Changed 12 years ago by laurentj

  • Resolution set to fixed
  • Status changed from reopened to closed

En fait je ne vais pas intégrer ce patch, car en fait ce problème est aussi succeptible d'apparaître pour les autres types de requetes comme css, xul etc. Donc plutôt que d'avoir autant de nouvelle classe, j'ai préféré modifier directement la classe de base jRequest.

Ainsi maintenant, il suffit de rajouter un paramètre pathInfoInQueryParameter, dans la section urlengine de la configuration. Ce paramètre doit contenir le nom du parametre dans $_GET qui contient la valeur du pathinfo (donc en reprenant l'exemple : pathInfoInQueryParameter=q123654) Si pathInfoInQueryParameter est vide, le fonctionnement est comme d'habitude, jelix va chercher le pathinfo dans $_SERVERPATH_INFO?.

Corrigé dans le trunk et la branche 1.0.x

Note: See TracTickets for help on using tickets.