vc6用isapi的filter實現url重定向功能

用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 然後你會看到什麼?呵呵,沒錯就是微軟的主頁

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章