2013-07-31 9 views
1

코드 6은 IIS 6 용 Isapi 필터의 주요 부분입니다. "/ some_string"을 포함하는 모든 요청을 다른 URL에 리디렉션해야합니다 도메인 및 기타 서버. 어떻게 수행하나요?IIS 6 Isapi 필터 - 리퀘스트를 다른 도메인으로 전달 또는 리디렉션

DWORD CAmgnIsapiFilter::OnPreprocHeaders(CHttpFilterContext* pCtxt, 
    PHTTP_FILTER_PREPROC_HEADERS pHeaderInfo) 
{ 
    char buffer[256]; 
    DWORD buffSize = sizeof(buffer); 
    BOOL bHeader = pHeaderInfo->GetHeader(pCtxt->m_pFC, "url", buffer, &buffSize); 
    CString urlString(buffer); 
    urlString.MakeLower(); 

    if (urlString.Find("/some_string") != -1) //we want to redirect this file 
    { 
     urlString.Replace("/some_string",""); 
     urlString = "http://new_domain.cz/something" + urlString; 

     char * newUrlString= urlString.GetBuffer(urlString.GetLength()); 
     pHeaderInfo->SetHeader(pCtxt->m_pFC, "url", newUrlString); 
     return SF_STATUS_REQ_HANDLED_NOTIFICATION; 
    } 
    //we want to leave this alone and let IIS handle it 
    return SF_STATUS_REQ_NEXT_NOTIFICATION; 
}

감사합니다!

답변

0

리디렉션하려는 새 URL을 브라우저에 알리는 302 상태 코드로 응답해야합니다.

그냥 작은 아니라 생산 수준의 템플릿이를 달성하기

// ... 문자의 RSP [50] wsprintf (rsp, "위치 : % s \ r \ n \ r \ n", newUrlString); pfc-> ServerSupportFunction (pfc, SF_REQ_SEND_RESPONSE_HEADER, (PVOID) "302 Redirect", (DWORD) rsp, 0); // ...

대신

pHeaderInfo-> SetHeader (pCtxt-> m_pFC, "URL", newUrlString);

나는 이것이 당신이해야 할 유일한 것이라고 생각합니다.