것은

2012-06-19 3 views
3

내가 항상 mod_rewrite 전에 실행 내 사용자 정의 필터를 확인해야합니다 필터링합니다. Apache Tutor에 따라, 필터는 결정적 순서로 실행하지 않습니다것은

요청 처리 축은 간단하다 : 상 순서대로 엄격하게 일어난다. 그러나 혼란은 데이터 축에서 발생합니다. 효율성을 최대화하려면 파이프 라인 방식이므로 콘텐츠 생성기 및 필터는 결정적 순서으로 실행되지 않습니다. 예를 들어 일반적으로 입력 필터에 무언가를 설정하고 생성기 또는 출력 필터에 적용 할 수는 없습니다.

두 필터의 실행 순서를 보장하려면 어떻게해야합니까?


업데이트 : 누군가가 모듈과 순서에 대한 자세한 정보를 표시 할 수 mod_infoindicated있다.

답변

4

가장 좋은 방법은 아파치 소스 코드를 살펴 보는 것입니다. ap_hook_fixups의 mod_proxy 및 mod_rewrite 사용법은 특정 모듈 앞이나 뒤에 훅을 삽입하는 방법의 완벽한 예입니다. 또한

static int my_fixup(request_rec *r) 
{ 
    /* do something with request headers before it goes to the mod_rewrite */ 
    return OK; 
} 

static void register_hooks(apr_pool_t *p) { 
    static const char * const aszSucc[] = {"mod_rewrite.c", NULL}; 
    ap_hook_fixups(my_fixup, NULL, aszSucc, APR_HOOK_FIRST); 
} 

, 당신은 후크의 다른 종류의 http://httpd.apache.org/docs/2.2/developer/hooks.html 페이지를 확인하실 수 있습니다, 또는 더 나은 제어하는 ​​방법을 이해하기 :

하자 당신이, 당신이 뭔가를 할 수 mod_rewrite를하기 전에 후크를 삽입하고 싶은 말은 후크 호출 순서.