* 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
'rewrite^foo $ /index.php/bar/baz last;' – emaillenin
@emilleneninいいえ、動作しません。 – edigu