我的目标是:我有一个网站,我想无论打开哪个页面,地址拦始终显示http://localhost/MyWeb
不管有多少个页面,不管带多少参数,都始终显示上面的地址
救命呀!
------解决方案--------------------------------------------------------
mark~~~~
------解决方案--------------------------------------------------------
一个办法是使用frameset
另外一个办法上全部使用ajax的方法
------解决方案--------------------------------------------------------
用URL重写,只能是把URL改变地址,但要只显示http://localhost/MyWeb,作不到了
------解决方案--------------------------------------------------------
方法一:http://localhost/MyWeb的主页用一个大的iframe 所有页面转化都在iframe 中进行
方法二:所有页面跳转用Server.Transfer
------解决方案--------------------------------------------------------
用框架.或者iframe.或者AJAX
------解决方案--------------------------------------------------------
楼主可以自己写个ISAPI组件去实现地址重定向,或者去网上下载个ISAPI_Rewrite,它是基于正则表达式的URL处理引擎,设置好相关的正则表达式后,把它挂到IIS就可实现地址重定向。这种方式最大的好处是你不必去修改你网站相关页面的源代码。
------解决方案--------------------------------------------------------
IHttpHandler 不实用
------解决方案--------------------------------------------------------
楼主不熟ISAPI_Rewrite的话,可以使用ISAPI实现Url重写, codeproject有个例子,url: http://www.codeproject.com/isapi/isapiredirector.asp
它将URL中指定的cfm页面重写为asp页面,也就是假设你访问的URL是http://localhost/test.cfm, 则经重写后实际访问的是http://localhost/test.asp, 且重写后不会改变地址栏的URL,下面是它的重写函数:
DWORD 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(); // for this exercise
if (urlString.Find( ".cfm ") != -1) //we want to redirect this file
{
urlString.Replace( ".cfm ", ".asp ");
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;
}
如楼主的网站如果是dotnet开发的,也可以像楼上的说的那样用IHttpHandler.