Nginx 에 thinkphp URL 재 작성 설정
회사 프로젝트 에 thinkphp 프레임 워 크 를 사용 하여 apache 에 배치 하 는 것 이 편리 합 니 다. thinkphp 홈 페이지 의 doc: Apache URL 재 작성 을 참고 할 수 있 습 니 다.
한편, nginx 에서 인터넷 에 구체 적 인 문서 가 없 는데 모두 자신의 프로젝트 에 따라 배치 되 고 다른 프로젝트 를 받 으 면 통 하지 않 기 때문에 본인 의 연 구 를 통 해 낚시 방법 을 알 게 되 었 습 니 다!
thinkphp 를 사 용 했 으 니 URL Mode 에 대해 알 아야 합 니 다.doc: URL 모드 를 참고 할 수 있 습 니 다.
준비 작업
먼저 모든 준 비 를 해 야 합 니 다. 예 를 들 어 nginx 가 시작 되 었 고 프로젝트 가 배치 되 었 지만 PATHINFO 나 REWRITE 링크 를 사용 하여 페이지 에 404 가 나타 납 니 다.
여기에 사 용 된 항목 (프로젝트 이름 이 NicePrj 라 고 가정) 의 구 조 를 간단하게 설명 합 니 다.
디 렉 터 리 구조 가 이 럴 수도 있 습 니 다.
/var/www/html/niceprj/
	application/
		prj1/
		prj2/
		prj3/
		  Common/
		  Conf/
		  js/
		  Lang/
		  Lib/
		  Runtime/
		  Tpl/
		  index.php
	thinkphp/
	static/
	index.php  우선 호 환 모드 로 정상적으로 접근 할 수 있 는 지 확인 합 니 다. 위의 사용자 가 페이지 에 로그 인하 고 호 환 모드 의 링크 를 사용 하면 이렇게 쓸 수 있 습 니 다.
http://www.....com/appliction/prj3/?m=user&a=login
index. php 를 추가 하거나:
http://www.....com/appliction/prj3/index.php?m=user&a=login
호 환 모드 에서 페이지 에 접근 할 수 있다 면 성공 에서 멀 지 않 습 니 다!
Nginx. conf 설정
첫 번 째 설정
location / {
    root   /var/www/html/niceprj;
    index  index.php index.html index.htm;
    if (!-e $request_filename) {
		rewrite  ^/application/prj1/(.*)$  /application/prj1/index.php/$1  last;
		rewrite  ^/application/prj2/(.*)$  /application/prj2/index.php/$1  last;
                rewrite  ^/application/prj3/(.*)$  /application/prj3/index.php/$1  last;
              break;
	}	
}  만약 에 그 부분 이 중점 이 고 저 는 세 줄 rewrite 를 정 의 했 습 니 다. 우리 가 이해 해 야 할 것 은 두 번 째, 세 번 째 매개 변수 입 니 다.
두 번 째 매개 변수: 어떤 주 소 를 rewrite 하고 주소 의 어느 부분 을 URL 매개 변수 로 전달 할 지 지정 합 니 다.여기 서 / application / prj 1 / 뒤에 있 는 내용 은 URL 매개 변수 로 여 겨 집 니 다.
이 정의 에 맞 는 링크 는 세 번 째 매개 변수 가 정의 하 는 규칙 으로 rewrite 됩 니 다.
세 번 째 매개 변수: 두 번 째 매개 변 수 를 처리 한 URL 매개 변수 입 니 다.
예 를 들 어 사용자 로그 인 페이지 에 접근 하기:http://www.....com/appliction/prj3/user/login
user / login 은 URL 매개 변수 로 세 번 째 매개 변수 에 전 달 됩 니 다. rewrite 후의 주 소 는 다음 과 같 습 니 다.http://www.....com/appliction/prj3/index.php/user/login
두 번 째, 세 번 째 매개 변 수 는 같 을 수 없습니다. ^/application/prj1/(.*)$ /application/prj1/$1 last;
그러면 페이지 는 끊임없이 새로 고침, 새로 고침, 새로 고침... 순환!이때 첫 번 째 일 은 바로 창 을 끄 는 것 이다!
2 단계 설정
location ~ .+\.php($|/){
	set $script    $uri;
	set $path_info  "/";
	if ($uri ~ "^(.+\.php)(/.+)") {
		set $script     $1;
		set $path_info  $2;
	}
    root           /var/www/html/niceprj;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /var/www/html/niceprj$fastcgi_script_name;
    fastcgi_param  PATH_INFO $path_info;
    include        fastcgi_params;
}  위의 설정 을 통 해 fastcgi 는 PATHINFO 모드 의 링크 요청 을 지원 합 니 다. 첫 번 째 설정 에서 rewrite 후의 주 소 는 여기에서 처리 합 니 다. 즉, phop - cgi 에 맡 기 는 것 입 니 다.
이렇게 되면 훨씬 간단 합 니 다. 사이트 디 렉 터 리 경 로 를 수정 하고 / var / www / html / niceprj 를 자신의 것 으로 바 꾸 십시오.정규 표현 식 처럼 보 이 는 다른 것들 은 신경 쓰 지 마 세 요.
3 단계 설정
location ~ /\.ht {
    deny  all;
}  nginx 가. htaccess 파일 을 읽 지 못 하 게 합 니 다!
총결산
3 단계 설정 을 통 해 이 설정 이 완료 되 었 습 니 다. 전체 설정 은 이렇게 보 입 니 다.
user  nobody;
worker_processes  5;
error_log  logs/error.log  info;
pid        logs/nginx.pid;
events {
    use epoll;
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile      on;
    tcp_nopush    on;
    tcp_nodelay   on;
    keepalive_timeout  10;
    gzip  on;
    server {
        listen       8080;
        server_name  localhost;
        charset utf-8;
        location / {
            root   /var/www/html/niceprj;
            index  index.php index.html index.htm;
            if (!-e $request_filename) {
			     rewrite  ^/application/prj1/(.*)$  /application/prj1/index.php/$1 last;
			     rewrite  ^/application/prj2/(.*)$  /application/prj2/index.php/$1 last;
                             rewrite  ^/application/prj3/(.*)$  /application/prj3/index.php/$1 last;
                             break;
        	}	
        }
        #location ~ \.php$ {
        location ~ .+\.php($|/){
        	set $script    $uri;
    		set $path_info  "/";
     		if ($uri ~ "^(.+\.php)(/.+)") {
        		set $script     $1;
        		set $path_info  $2;
     		}
            root           /var/www/html/niceprj;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/www/html/niceprj$fastcgi_script_name;
            fastcgi_param  PATH_INFO $path_info;
            include        fastcgi_params;
        }
        location ~ /\.ht {
            deny  all;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}  테스트
브 라 우 저 를 열 어 테스트 해 보 세 요. 잘못된 부분 (예 를 들 어 404, 502, 페이지 순환 모양 이 계속 새로 고침 (바로 페이지 꺼!) 이 있 으 면 로그 파일 을 보 세 요. 기본 값 은 error 입 니 다.로그 파일.
로그 파일 에서 어떤 링크 를 요 청 했 는 지, 어떤 링크 로 전 환 했 는 지 볼 수 있 습 니 다.
보통 문제 가 발생 하면 첫 번 째 설정 에 있 는 rewrite 부분 입 니 다. 자신의 프로젝트 의 디 렉 터 리 구조 에 따라 조정 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.