如下配置:
server {
...
location / {
# 重新向所有非真实存在的请求到index.php
# try_files $uri $uri/ /index.php$args;
# try_files $uri $uri/ /index.php?/$uri;
# try_files $uri $uri/ /index.php?$query_string;
# try_files $uri /index.php$is_args$args;
try_files $uri $uri/ /index.php?$args;
}
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;
}
}
1) try_files $uri $uri/ /index.php$args;
2) try_files $uri $uri/ /index.php?/$uri;
3) try_files $uri $uri/ /index.php?$query_string;
4) try_files $uri $uri/ /index.php?$args;
5) try_files $uri /index.php$is_args$args;
我已经测试过, 1 和 4,比如,
我的根目录 index.php
文件
<?php
var_dump($_GET);
配置 1 的话,访问: http://localhost:8081/hello/w...
$_GET
打印为空
array (size=0)
empty
配置 4 的话
$_GET
打印
array (size=2)
'foo' => string 'bar' (length=3)
'big' => string 'foot' (length=4)
老实说不懂这些配置是什么意思,都是自己在一个个测的,还有在 nginx 配置中,如$uri
,$args
,$query_string
这些看起来像变量的东西是怎么突然出现在 nginx 的配置中的?
1) try_files $uri $uri/ /index.php$args;
2) try_files $uri $uri/ /index.php?/$uri;
3) try_files $uri $uri/ /index.php?$query_string;
4) try_files $uri $uri/ /index.php?$args;
5) try_files $uri /index.php$is_args$args;
这几个它们有什么区别?
参考