Magento 1.7 REST API nginx重写规则。 api.php没有执行

所有如果我打开链接http://example.com/api/rest/products ,它只是下载api.php,而不是脚本执行。

它可能是什么?

有我的nginx网站的magento规则

location /api { rewrite ^/api/rest /api.php?type=rest break; } location / { index index.html index.php; try_files $uri $uri/ @handler; expires 30d; } location ~ (/(app/|includes/|lib/|/pkginfo/|var/|report/config.xml)|/\.svn/|/.hta.+) { deny all; } location ^~ /(app|includes|lib|media/downloadable|pkginfo|report/config.xml|var)/ { internal; } location /var/export/ { internal; } location /. { return 404; } location @handler { rewrite / /index.php; } location ~* .php/ { rewrite ^(.*.php)/ $1 last; } location ~* .php$ { if (!-e $request_filename) { rewrite / /index.php last; } expires off; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param MAGE_RUN_CODE default; fastcgi_param MAGE_RUN_TYPE store; include fastcgi_params; } 

我也看到了这个帖子,并得到了同样的东西。
我改变了从breaklast的规则,事情似乎现在工作:

 location /api { rewrite ^/api/rest /api.php?type=rest last; } 

我相信它是这样工作的,因为last重新扫描重写,并可以执行您的'.php'位置指令,其中break只考虑当前位置块(/ api)。 来源: http : //wiki.nginx.org/HttpRewritemodulee#rewrite

你应该写在你的nginx配置中:

  location /api { rewrite ^/api/rest /api.php?type=rest last; rewrite ^/api/v2_soap /api.php?type=v2_soap last; rewrite ^/api/soap /api.php?type=soap last; }