답변:
설명서를 간단히 살펴보십시오 .
SetEnvIf 지시문은 요청의 속성을 기반으로 환경 변수를 정의합니다. 첫 번째 인수에 지정된 속성은 다음 세 가지 중 하나 일 수 있습니다.
HTTP 요청 헤더 필드 (자세한 내용은 RFC2616 참조); 예 : 호스트, 사용자 에이전트, 참조 자 및 수락 언어 요청 헤더 세트를 지정하는 데 정규식을 사용할 수 있습니다.
따라서 Host헤더 에서 환경 변수를 조건부로 만들 수 있습니다 . 당신이 중 하나를 사용하려고하는 것 같습니다 Referer또는 Remote_Host(이론적으로하지만, 정확하게 당신이 원하는 무엇 헤더, 어느 쪽도 아니 Referer의 값이 포함되어야 Host대부분의 경우 헤더). 요청 Remote_Host을하는 클라이언트 의 호스트 이름이 될 것입니다. 원하는 것은 아닙니다 (성능상의 이유로 DNS 조회를 끄는 것이 일반적이기 때문에 대부분의 구성에서는 사용할 수 없습니다).
다음과 같이 해보십시오 :
SetEnvIf Host "www-dev\.example\.com" ENV=DEV
SetEnvIf Host "www-production\.example\.com" ENV=PRD
... $ _ SERVER [ 'ENV']를 사용하여 논리 분기를 만듭니다.
그러나이 Hostchicanery를 거치지 않고 PHP에서 직접 헤더 값을 직접 참조 할 수 있습니다 . $_SERVER['HTTP_HOST']정확히 당신이 원하는 것을 가질 것입니다.
SetEnvIf문서는 3 PARAM 도메인 이름에 점은 백 슬래시로 이스케이프 안 정규식이라고 말? 아니면 큰 따옴표로 값을 인용하면 Apache가 문자열 리터럴로 취급합니까?
"www-dev.example.com"정규 표현식은 예기치 않은 호스트 이름 (예 :) 과도 일치 www-dev-example.com합니다. 예상되는 경기 등을 얻을 수 있습니다. 예를 지금 업데이트했습니다.