nginx는 pathinfo를 구현하기 위해 몇 개의 모드를 가지고 있나요?

WBOY
풀어 주다: 2016-10-17 09:30:00
원래의
914명이 탐색했습니다.

나는 재작성을 통해 성공적으로 리디렉션할 수 있다는 것을 알고 있습니다.
그런데 Brother Bird의 블로그에서 다시 작성하는 것 외에 설정을 전달하는 다른 방법이 있다는 것을 알게 되었습니다.
Niao 형제 nginx pathinfo 포털
Niao 형제가 블로그에서 언급한 재작성 리디렉션 이외의 방법의 원리는 무엇인가요?

답글 내용:

나는 재작성을 통해 성공적으로 리디렉션할 수 있다는 것을 알고 있습니다.
그런데 Brother Bird의 블로그에서 다시 작성하는 것 외에 설정을 전달하는 다른 방법이 있다는 것을 알게 되었습니다.
Niao 형제 nginx pathinfo 포털
Niao 형제가 블로그에서 언급한 재작성 리디렉션 이외의 방법의 원리는 무엇인가요?

Brother Bird가 작성한 이 기사는 사실 개념상 약간 혼란스럽습니다.
먼저 Niao 형제가 언급한 Rewrite 리디렉션 방법은 Query String을 통한 Nginx 리디렉션을 통해 PATH_INFO를 PHP로 전달하는 것을 말합니다.
예를 들어 리디렉션 규칙을 통해 /user/1을 요청하고 이를 /index.php?path_info=/user/1으로 변경합니다.
이 방법을 사용하려면 PATH_INFO를 분석하기 위해 쿼리 문자열을 수집하는 PHP 스크립트가 필요하며 특정 호환성 조정이 필요합니다.

Niao 형제가 소개한 두 번째 방법은 PHP가 PATH_INFO 정보를 분해하도록 하는 것입니다.
예를 들어 /index.php/user/1을 요청하면 PHP는 스크립트 뒤의 경로를 PATH_INFO로 자동으로 분해할 수 있습니다. 여기서는 /user/1입니다.
Niao 형제는 PHP를 분해할 때 특정 보안 문제가 발생할 수 있으므로 이 방법은 여전히 ​​권장되지 않는다고 말했습니다.

마지막으로 Niao 형제가 또 다른 방법을 소개했습니다. 일반적으로 여전히 /index.php/user/1에서 /user/1를 분해하는 방법이지만 이번에는 Nginx에서 분해 과정이 완료됩니다. PHP에서 디스어셈블리를 완료하는 처음 두 가지 방법과 비교할 때 이 방법은 더 많은 정보를 사용할 수 있고 더 직접적이므로 더 나은 결과를 제공합니다.

그러나 일반적으로 /index.php/user/1 형식으로 URL을 표시하지 않고 대신 /user/1으로 표시되는 프로그램 입구를 숨기려고 합니다. 따라서 이 과정에서 프로그램 항목을 숨기고 프로그램 항목 스크립트로 리디렉션하는 과정을 완료하려면 Nginx의 Rewrite를 사용해야 합니다. 인터넷에서 흔히 볼 수 있는 PHP+Nginx의 숨겨진 항목 구성은 PATH_INFO를 분해하는 마지막 방법과 함께 Rewrite를 통해 완성됩니다.

따라서 Niao 형제의 제안에는 몇 가지 문제가 있습니다. PATH_INFO를 해체하는 첫 번째 방법은 단순히 Nginx의 Rewrite와 동일시될 수 없습니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿