用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 然后你会看到什么?呵呵,没错就是微软的主页