Nginx与干净的URL,获取参数和PHP-FPM

时间:2012-04-07 17:44:40

标签: get nginx clean-urls php

我很想知道是否有可能以某种方式配置nginx,以便在发送参数之前解析url参数而不在文件名末尾指定.php

例如,假设我有一个帐户模块,它根据发送的参数处理要加载的帐户的哪个方面。如果参数为?sk='login',则会加载登录模块。如果是?sk='register',它将加载注册模块 - 依此类推。

问题是,当我输入http://host/account?sk='login'时,当我尝试打印数组中的值时,我无法通过$_GET获得任何内容。问题是干净的URL 加载了应该管理$_GET参数的文件,除非它实际上不会处理 $_GET除非我在文件名的末尾指定.php

我猜是有一个nginx或php-fpm配置以某种方式允许这个。

这可能吗?

1 个答案:

答案 0 :(得分:1)

我明白了:

使用nginx的想法是定义一个位置,指定该位置的根,然后在指定try_files变量和要执行的$uri文件时执行.php, em> with 参数。

例如:

location /somelocation {
    root /path/to/somelocation/on/server;
    try_files $uri /somelocation/somefile.php?key=$args;
}

您可以指定http://host/somelocation?key='someargument'

,而不是键入/somelocation?someargument

从那里开始,当你在php中调用$_GET[ 'key' ]时,它会输出someargument,密钥为key。密钥可以是您指定的任何内容。