09 nginx Rewrite (재 작성) 상세 분석
1676 단어 rewrite
:Rewrite( )
rewrite 다시 쓰기
재 작성 에 사용 할 명령 어
if (조건) {} 조건 을 설정 하고 다시 쓰기
set \ # 변수 설정
return \ # 상태 코드 되 돌리 기
break \ # 점프 rewrite
rewrite \ # 다시 쓰기
If 문법 서식
If 공백 (조건) {
다시 쓰기 모드
}
조건 은 또 어떻게 씁 니까?
답: 3 가지 표기 법
1: "=" 로 똑 같이 판단 하여 문자열 비교 에 사용 합 니 다.
2: "~" 정규 로 일치 합 니 다. (여기 정규 대소 문자 구분)
~* 대소 문자 구분 없 는 정규
3: - f - d - e 는 파일 인지, 디 렉 터 리 인지, 존재 하 는 지 판단 합 니 다.
예:
if ($remote_addr = 192.168.1.100) {
return 403;
}
if ($http_user_agent ~ MSIE) {
rewrite ^.*$ /ie.htm;
break; \ # (break 하지 않 으 면 순환 하여 방향 을 바 꿉 니 다)
}
if (!-e $document_root$fastcgi_script_name) {
rewrite ^.*$ /404.html break;
}
주, 여기에 break 를 더 해 야 합 니 다.
xx. com / dsafsd. html 이 페이지 가 존재 하지 않 는 것 을 예 로 들 면,
로그 에 표 시 된 접근 경 로 를 관찰 합 니 다. GET / dsafsd. html HTTP / 1.1 입 니 다.
알림: 서버 내부 의 rewrite 와 302 점프 가 다 릅 니 다.
건 너 뛰 면 URL 이 바 뀌 고 http 요청 404. html 로 바 뀌 었 으 며 내부 rewrite 는 문맥 이 바 뀌 지 않 았 습 니 다.
즉, fastcgi script name 은 여전히 dsafsd. html 이기 때문에 순환 적 으로 방향 을 바 꿉 니 다.
set 는 변 수 를 설정 하 는 데 사 용 됩 니 다. 여러 조건 으로 판단 할 때 표지 용 으로 사용 할 수 있 습 니 다.
apache 의 rewrite condition 효과 달성
다음 과 같 습 니 다. IE 를 판단 하고 다시 쓰 며 break 를 사용 하지 않 습 니 다. 우 리 는 set 변수 로 목적 을 달성 합 니 다.
if ($http_user_agent ~* msie) {
set $isie 1;
}
if ($fastcgi_script_name = ie.html) {
set $isie 0;
}
if ($isie 1) {
rewrite ^.*$ ie.html;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rewrite core modelexample: we will rewrite Mage_Newsletter_Model_Subscriber in order to disable send success subscriber and send unsubscri...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.