让 nginx 提供 PATH_INFO,并实现 PATH_INFO 重写

我采用nginx + php-fpm的配置,nginx默认情况下,不提供PATH_INFO,通过以下设置,可以让 nginx 提供 PATH_INFO,实现  PATH_INFO 重写:

 

 1 server {

 2     listen 80; 

 3     server_name www.sample.com;

 4     root /www;

 5     index index.php index.html;

 6     location / { 

 7         index index.php index.html index.htm;

 8 

 9         #以下部分实现重写

10         if (!-e $request_filename) {

11             rewrite ^/(.*)$ /index.php/$1 last;

12         }

13         #也可以写在一个独立的文件中,然后include进来,如下一行

14         #include /www_rewrite/.htaccess;

15 

16     }   

17     location ~ \.php($|/) {

18         fastcgi_pass 127.0.0.1:9000;

19         fastcgi_index index.php;

20         fastcgi_buffers 8 128k;

21         send_timeout 60; 

22         include /etc/nginx/fastcgi_params;

23 

24         #这一部分实现PATH_INFO,使用$_SERVER['PATH_INFO']获取该值

25         set $script_name $fastcgi_script_name;

26         set $path_info ""; 

27         if ($uri ~ "^(.+?\.php)(/.*)$") {

28                set $script_name $1; 

29                set $path_info $2; 

30         }   

31         fastcgi_param PATH_INFO $path_info;

32         fastcgi_param SCRIPT_NAME $script_name;

33         #至此,已完成PATH_INFO的配置

34     }   

35 }

 

你可能感兴趣的:(nginx)