httpd.conf에서 $ {var}와 % {var}의 차이점은 무엇입니까?
거의 모든 것. 어디에서 어떻게 사용 하느냐에 따라 다른 일을하기 때문에 " $
x를 %
수행하고 y를 수행한다"라는 단단하고 빠른 규칙은 없습니다 .
mod_rewrite 지시문을 제외하고 $ {VAR}은 httpd.conf의 모든 곳에서 사용됩니까?
아니오 -mod_rewrite 관련 행에서도 구성 전체의 모든 위치에서 ${VAR}
대체로 적용됩니다 . httpd 바이너리에 전달 된 옵션 또는 지시문 을 사용하여 시작시에만 정의 할 수 있습니다 .-D
Define
변수에는 :
문자가 포함되어서는 안되며 RewriteMap
사용법에는 문자가 포함되어야하기 때문에이 작업을 수행 할 수 있습니다 :
. 이렇게하면 $
충돌없이 매우 다른 방식으로를 사용할 수 있습니다. 파서는이를보고 :
대체하지 않아야한다는 것을 알고 있습니다.
동일한 httpd.conf에서 사용하기 위해 SetEnvIf 지시문을 사용하여 httpd.conf에 설정된 변수를 변수가 mod_rewrite 지시문과 함께 사용될 때를 제외하고 $ {var}로 사용됩니까? 변수는 % {var}로 사용됩니까?
제 환경 변수는 변수를 통해 설정과 동일하지 않습니다 -D
또는 Define
- 그들은 완전히 분리 당 요청 문맥 (사람들은 그들에게 함께있을 설정되어있어 SetEnvIf
), 특정 지시어를 사용하는 것이다. 그것들은 지원되는 곳에서 mod_rewrite, 그들이 사용하는 %{ENV:variable}
로그 에서 언급되며 %{variable}e
, 많은 지시문에는 논리 검사가 env=variable
있습니다.
그래서 기본적으로; 지난 수십 년 동안 웹 서버의 역사를 보여주는 혼란스러운 혼란입니다. 아마도 혼동하는 주된 것은 mod_rewrite의 구문이 어떤 식 으로든 구성의 다른 부분으로 확장되지 않는다는 것입니다. 다 다릅니다. 이 모든 것에서 취해야 할 요점은이 모든 것을 이해하기위한 지배적 인 '규칙'이 $
없다는 것입니다. 한 지점 $
에서 다른 지점 과는 완전히 다른 것을 의미합니다 .
몇 가지 편리한 참조 점 :
- 당신은 아파치가 사용을 시작할 때 정적 변수를 설정하고자하는 경우
Define
와 ${VAR}
아파치의 시작에 한 번 교체하십시오. 이는 개발 환경과 프로덕션 환경간에 구성 파일 공유와 같은 작업을 수행하려는 경우에 유용하지만 항상을 포함하는 $
from 사용과 혼동해서는 안됩니다 .RewriteMap
:
- 특정 요청에서 변수로 작업하려는 경우 환경 변수가 뒤 따릅니다. 그러나 특정 지시문과 함께 사용될 때 변수를 얻는 데 사용할 구문에 대해 가정 할 수는 없습니다. 해당 지침에 대한 설명서를 확인해야합니다.
- mod_rewrite에 문제가 있으면 변수와 구문에 대해 생각한 모든 것을 버리십시오. 에 자체 변수 세트가 있으며을 사용
%{VAR}
하여 '일반'환경 변수를 얻을 수 있으며을 사용하여 환경 변수를 %{ENV:VAR}
설정할 수 있습니다 [E=VAR]
.