用vc實現url重定向功能非常簡單 ,當然用.net更簡單一些,但是asp3並不能用.net方法,最近剛好工作中又需要這類技術
最近參考了第五版的visual c++技術內幕 第35章Microsoft internet信息服務器(IIS)編程,裏面講到了一些isapi技術,但是裏面對於過濾器(filter)講得很少,很難理解如何去用url的rewriter技術
不過在實踐的時候發現了一個很好玩的單詞onurlmap 當時猜測這個overload的函數是不是可以實現重定向呢?於是打開msdn手冊,搜索了一下,發現還真的可以.現在就說一下,如果去寫這種代碼
首先在vc6中新建工程->選擇isapi extension wizard->選在isapi filter,把下面的那個isapi的擴展的勾去了->然後除了默認選項的勾以外,要多加一個url mapping requests的勾也要選上
在OnUrlMap這個函數裏輸入
if (strstr (pMapInfo->pszURL, "DoRedirect"))
{
CHAR szRedirect [256];
// replace www.microsoft.com with desired server
sprintf(szRedirect, "Location: http://%s/r/n/r/n", "www.microsoft.com");
pCtxt->ServerSupportFunction ( SF_REQ_SEND_RESPONSE_HEADER,
(LPVOID) "302 Redirect",
(DWORD *) szRedirect,
0 );
// Print a message to the debug window
ISAPITRACE1 ("Redirecting to: %s/n", szRedirect);
// we are done with this request
return SF_STATUS_REQ_FINISHED_KEEP_CONN;
}
// URL did not contain a DoRedirect string.
return SF_STATUS_REQ_NEXT_NOTIFICATION;
生成dll,在iis裏的默認網站的屬性裏在isapi過濾器中選擇那個dll
然後在ie或者其他的網頁瀏覽器裏輸入http://localhost/DoRedirect 然後你會看到什麼?呵呵,沒錯就是微軟的主頁