2011-10-28 22 views
1

Apache 모듈을 작성 중이며 디렉터리 구성 병합 기능의 동작과 관련하여 혼란을 겪었습니다. 이런 지침을Apache 모듈에 대한 인수 이해 디렉터리 구성 병합 기능

static void *x_merge_dir_config(apr_pool_t *p, void *parent_conf, void *newloc_conf); 

을하지만 주어진 : mod_example의 소스에서

이 파라미터는 다음과 같이 표시되어

<Location /path/> 
    MyOption value-from-path 
</Location> 

<Location /> 
    MyOption value-from-root 
</Location> 

이 기능 http://localhost/path/에 대한 액세스의 결과로서 호출 될 때 이 함수는 parent_conf를 /path/에서 호출하고 newloc_conf를 /에서 가져 오는 것으로 호출됩니다. 이는 정확히이 매개 변수의 이름을 기반으로 기대했던 것과 반대입니다. 나는 "/"을 부모로, "/ blog /"를 자식/종속/가장 구체적인 경로로 설명합니다.

저는 실제 이야기가 무엇인지 알아 내려고합니다. Apache는 "parent"라는 단어를 다른 것보다 많이 사용합니까? mod_example에서 이러한 매개 변수의 잘못된 이름을 잘못 지정 했습니까? 나는 혼란 스럽습니까?

+1

안녕하세요, 가까운 사람에게 투표 : 투표를 떠날 때 의견을 남기면 내 도움이됩니다. 내 관점에서 볼 때 이것은 절대적으로 소프트웨어 개발 관련 질문이기 때문에 도움이됩니다. 제 말은 소프트웨어의 주요 부분에 대한 C API에 대한 글쓰기에 대한 질문입니다. 그건 목표물처럼 보입니다. – larsks

답변

1

"상위"/ "새로운"args는 Apache가 해당 지시문과 연결된 경로 이름보다 구성 지시문을 적용하는 순서와 관련이 있습니다. 아시다시피 서버마다 시작한 다음 vhost로 시작하고 Location 섹션 등으로 시작하여이 목록의 이후 지시문을 사용하여 섹션을 무시합니다. 그리고 병합 콜백의 작업은 "부모"의 내용을 "newloc"의 내용으로 재정의 한 결과를 계산하는 것입니다.

여러 개의 위치 섹션이 요청과 일치하면 they are applied in the order they appear in the config file입니다. 따라서 MyOption value-from-root이 병합되면 "새로운"구성 부분이 적용됩니다 - value-from-path 뒤에 적용됩니다 - 따라서 "newloc"arg에 있고 value-from-path을 포함하여 그 시점까지 계산 된 구성은 "parent" ".

모듈이 비정상적인 병합 동작을하지 않는 한 이는 두 위치 섹션의 순서를 바꿔야한다는 것을 의미합니다. 두 번째 모듈은 루트에 대해 항상을 적용하고 첫 번째는 눈에 보이는 효과가 있습니다.)

+0

와우, 나는 이제까지 여기에서 응답을 얻는 것을 포기했다. 당신의 생각에 감사드립니다. 오늘 저녁에 실험을 해보고 어떻게 보이는지 보겠습니다. – larsks