Nginx 가 ThinkpHP 의 URL 재 작성 과 PATHINFO 를 지원 하도록 합 니 다.

2267 단어 nginx;thinkphp
Nginx 가 ThinkpHP 의 URL 재 작성 과 PATHINFO 를 지원 하도록 합 니 다.
ThinkpHP 가 nginx 에서 올 바 르 게 작 동 하도록 합 니 다.
설정 파일 에 다음 정 보 를 추가 하면 nginx 가 ThinkpHP 사 이 트 를 정확하게 해석 할 수 있 습 니 다.
 
 

    location /project/
    {
      index  index.php;
      if (!-e $request_filename)
      {
        rewrite  ^/project/(.*)$  /project/index.php/$1  last;
        break;
      }
    }
  
    location ~ .+\.php($|/)
    {
      set $script    $uri;
      set $path_info  "/";
      if ($uri ~ "^(.+\.php)(/.+)")
      {
        set $script     $1;
        set $path_info  $2;
      }
  
      fastcgi_pass 127.0.0.1:9000;
      include fastcgi.conf;
      fastcgi_index  index.php?IF_REWRITE=1;
      fastcgi_param PATH_INFO $path_info;
      fastcgi_param SCRIPT_FILENAME  $document_root/$script;
      fastcgi_param SCRIPT_NAME $script;
    }

먼저 procject 의 요청 을 index. php 로 전송 합 니 다. 즉, ThinkpHP 의 단일 입구 파일 입 니 다.그리고 php 파일 에 대한 요청 을 fastcgi 에 맡 기 고 PATH 를 추가 합 니 다.INFO 의 지원.
Nginx 를 다시 시작 하면,http://localhost/project/Index/insert, http://localhost/project/index.php/Index/delete 이런 URL 은 모두 정확하게 접근 할 수 있다.
또 주의해 야 할 것 은 Nginx 프로필 에 if 와 뒤의 괄호 사이 에 빈 칸 이 있어 야 한 다 는 것 입 니 다. 그렇지 않 으 면 알 수 없 는 directive 오 류 를 알 릴 수 있 습 니 다.
기계 프로필 첨부:
location / {
        index           index.php index.html index.htm;
        root           /data/www/wwwroot/test;
if (!-e $request_filename)
      {
        rewrite  ^/(.*)$  /index.php/$1  last;
        break;
      }
    }
  
    location ~ .+\.php($|/){
      set $script    $uri;
      set $path_info  "/";
      if ($uri ~ "^(.+\.php)(/.+)")
        {
        set $script     $1;
        set $path_info  $2;
        }
      fastcgi_pass  unix:/tmp/php-fcgi.sock;
      include fastcgi_params;
      fastcgi_index  index.php?IF_REWRITE=1;
      fastcgi_param PATH_INFO $path_info;
      fastcgi_param SCRIPT_FILENAME  /data/www/wwwroot/test/$script;
      fastcgi_param SCRIPT_NAME $script;
 

좋은 웹페이지 즐겨찾기