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에 따라 라이센스가 부여됩니다.