我按照以下方式配置我的NGINX for Zend(PHP 5.3 with fpm):
server {
root /home/page/public/;
index index.php index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
现在我想处理额外的get params,例如:http://web.site/index?par=1
对于我的本地开发系统(Apache),它可以正常工作但不在NGINX下,它确实提供了获取参数。
Anny建议?
编辑:
现在我使用以下配置似乎有效,但我对此不满意,因为每个人都建议尽可能使用try_files"。
location / {
if (!-e $request_filename) {
rewrite /(.*)$ /index.php?q=$1 last;
break;
}
}
答案 0 :(得分:5)
来自Nginx文档(http://wiki.nginx.org/HttpCoreModule#try_files):
如果你需要保留args,你必须明确地这样做:
location / {
try_files $uri $uri/ /index.php?$args;
}
答案 1 :(得分:-1)
我为此使用rewrite module;尝试使用以下内容替换location /
块:
location / {
index index.php index.html index.htm;
}
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}