2012-01-04 97 views
1

我有一个奇怪的重写问题,nginx & php5-fpm在* nix平台上。我使用一个Router.php类作为应用程序资源,并且在这个文件中有很多路由,为相应的模块&控制器生成用户友好的uri。现在,我想移动一些基于正则表达式的应用程序路由到nginx级别,当我将路由移动到nginx config时,我得到“无效的控制器指定”错误。Nginx + Php-fpm + Zend Framework 1.11奇怪的重写错误

简单地说,当用户请求/ foo URI时,我想要触发BarController的bazAction()。它成功地工作在应用层上(通过路由器资源)

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); 
... 

当我试图做到这一点使用nginx的重写规则这样

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

我收到指定无效控制器(富)错误。我如何正确处理这个重写规则?

我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

检查,如果这是工作'重写^ foo $ /index.php/bar/baz最后;' – emaillenin 2012-01-04 04:52:53

+0

@emaillenin不,它不工作。 – edigu 2012-01-04 05:22:43

回答

0
+1

该链接是404 +1。 – folktrash 2013-10-23 21:15:39

+0

在一个更轻的笔记上,我想用代码扼住那个开始整个foo/bar事物的人。在例子中使用更多的描述性变量名更有意义。尝试“userid/jakem”和“颜色/红色”对,这实际上是有意义的。 – 2015-01-25 15:36:55