Nginx 가 ThinkpHP 의 URL 재 작성 과 PATHINFO 를 지원 하도록 합 니 다.
2267 단어 nginx;thinkphp
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;