나는 재작성을 통해 성공적으로 리디렉션할 수 있다는 것을 알고 있습니다.
그런데 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와 동일시될 수 없습니다.