如果用户在我的网络服务器上请求任何.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;
}
}
任何人都可以帮助我吗? 感谢。
答案 0 :(得分:0)
如果文件从不存在,您可以这样做:
try_files $uri $uri/ /index.php
您也可以像这样重写请求:
location / {
rewrite ^.*$ /index.php last;
}
在这两种情况下,您都应该能够使用PATH_INFO
或REQUEST_URI
阅读原始请求。
请查看以下链接,了解更多建议:http://drupal.org/node/110224,http://michaelshadle.com/2010/08/20/front-controller-patterns-and-nginx/,Zend Framework on nginx