nginx重定向302而不是重写200

时间:2010-11-27 15:56:57

标签: php nginx

如果用户在我的网络服务器上请求任何.php文件,我希望他的请求(例如他请求mysite.com/testfile.php)由index.php处理

在index.php中,我使用$ _SERVER ['REQUEST_URI']来查看用户想要查看的页面(例如/testfile.php),因此index.php可以生成相应的html代码。请注意,testfile.php不需要存在。

我的问题是,当我尝试请求testfile.php时,我总是得到一个重定向302(因此$ _SERVER ['REQUEST_URI']是/)。但我想要的是testfile.php的200 OK,而index.php为此生成正确的html代码。

这是我的bug nginx.conf的片段:

 server {
 [...]

   root /home/test;

   # When I go to mysite.com redirect my to mysite.com/
   location = / {
   index index.php;
   }

   # For any php file request: let index.php handle the request
   location ~ \.(php)$ {
   include fastcgi_params;
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_param  SCRIPT_FILENAME  /home/test/index.php;
   }
 }

任何人都可以帮助我吗? 感谢。

1 个答案:

答案 0 :(得分:0)

如果文件从不存在,您可以这样做:

try_files $uri $uri/ /index.php

您也可以像这样重写请求:

location / {
  rewrite ^.*$ /index.php last;
}

在这两种情况下,您都应该能够使用PATH_INFOREQUEST_URI阅读原始请求。

请查看以下链接,了解更多建议:http://drupal.org/node/110224http://michaelshadle.com/2010/08/20/front-controller-patterns-and-nginx/Zend Framework on nginx