2012-01-04 12 views
1

* nixプラットフォーム上でnginx & php5-fpmに奇妙な書き換え問題があります。私は、アプリケーションリソースとしてRouter.phpクラスを使用しています。このファイルには、対応するモジュール&コントローラ用のユーザーフレンドリーなURLを生成するルートがたくさんあります。今、私はnginxレベルにこの正規表現ベースのアプリケーションルートの一部を移動すると、私はnginxの設定へのルートを移動すると、私は "無効なコントローラ指定"のエラーを取得しています。Nginx + Php-fpm + Zend Framework 1.11変な書き換えエラー

ユーザーが/ foo URIを要求すると、私はBarControllerのbazAction()を起動します。私はこの

rewrite ^/foo /index.php/bar/baz?$args last; 

私は指定された無効なコントローラを取得しています(FOO)エラーのように、この使用してnginxの書き換えルールをしようとするとそれは成功し

public function init() { 
    $router = Zend_Controller_Front::getInstance()->getRouter(); 
    $f = new Zend_Controller_Router_Route_Static('foo', 
               array('controller' => 'Bar', 
                 'action' => 'baz')); 
    $router->addRoute('foo', $f); 
... 

(ルータのリソースを経由して)アプリケーションレベルで取り組んでいます。この書き換えルールを正しく処理するにはどうすればよいですか?

マイserver.configは次のとおりです。

server { 
     listen  80; 
     server_name www.dummy.com; 
     root   /Users/foozy/Sites/dummy.com/public; 
     index  index.php; 

     location/{ 
      try_files $uri $uri/ @rewrites; 
     } 

     location @rewrites { 
      rewrite ^/foo /index.php/bar/baz?$args last; 
      # i also tried : 
      # rewrite ^/foo /bar/baz?$args last; 
      rewrite^/index.php?$args; 
     } 

     location ~ ^.+\.php { 
      include /etc/nginx/fastcgi_params; 
      fastcgi_pass 127.0.0.1:9000; 
     } 
    } 

マイfastcgi_paramsファイルは次のとおりです。

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
fastcgi_param QUERY_STRING  $query_string; 
... nginx's default params here ... 
fastcgi_param SCRIPT_NAME  $fastcgi_script_name; 
fastcgi_param REQUEST_URI  $request_uri; 
fastcgi_param DOCUMENT_URI  $document_uri; 
... 
fastcgi_param   APPLICATION_ENV development; 
fastcgi_index   index.php; 
fastcgi_split_path_info ^(.+\.php)(.*)$; 
fastcgi_param   PATH_INFO   $fastcgi_path_info; 

そしてphp.iniのfix_pathinfoには0に設定されています:

cgi.fix_pathinfo=0 

のPHP V5。 3.8、Nginx v1.0.10

+0

'rewrite^foo $ /index.php/bar/baz last;' – emaillenin

+0

@emilleneninいいえ、動作しません。 – edigu

答えて

0

私はこのmanu alはルータを動作させるためにNGINX + PHP-FPM + Zend_Framework Infinite 30x redirect loop

+1

そのリンクは404 +1です。 – folktrash

+0

軽いノートでは、コード内のfoo/barの全体を開始した人をチョークしたいと思います。例でより記述的な変数名を使用するほうが理にかなっています。実際に意味をなさない "userid/jakem"と "color/red"のペアを試してみてください。 –

関連する問題