Nginx下使Thinkphp URL模式支持PATHINFO和REWRITE

来源:互联网 发布:微商天下软件 编辑:程序博客网 时间:2024/04/28 13:46

轉:http://blog.csdn.net/codercwm/article/details/52786712

1.支持PATHINFO

找到location ~ \.php {   ,把$去掉,并在里面加上这两句fastcgi_split_path_info ^(.+\.php)(.*)$;     #增加fastcgi_param PATH_INFO $fastcgi_path_info;    #增加
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

location ~ \.php { #去掉$            root       html            fastcgi_pass   127.0.0.1:9000;            fastcgi_index  index.php;            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;            include        fastcgi_params;            fastcgi_split_path_info ^(.+\.php)(.*)$;     #添加            fastcgi_param PATH_INFO $fastcgi_path_info;    #添加        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.支持REWRITE去掉index.PHP

找到location / {  在里面加上if (!-e $request_filename) {   rewrite  ^/(.*)$ /index.php?s=$1  last;   break;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

location / {            root       html             index  index.html index.htm index.php;            if (!-e $request_filename) {                 #添加                   rewrite  ^/(.*)$ /index.php?s=$1  last; #添加                   break;                                 #添加            }                                             #添加        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

如果thinkphp不是部署在网站根目录下,即需要把

rewrite  ^/(.*)$ /index.php?s=$1  last;改成rewrite  ^/子目录/(.*)$ /子目录/index.php?s=$1  last;
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

如果根目录下有多个项目的话,可以写多个rewrite:

 if (!-e $request_filename) {      rewrite  ^/项目1/(.*)$ /项目1/index.php?s=$1  last;      rewrite  ^/项目2/(.*)$ /项目2/index.php?s=$1  last;      rewrite  ^/项目3/(.*)$ /项目3/index.php?s=$1  last;      break; }