诚心请教一个地址重定向的问题

coodd 2009-04-24 04:55:51
现在有一个网站,我需要将这个网站所有页面都映射一个虚拟路径的虚拟镜像:比如页面地址 http://www.csdn.net/abc.aspx 镜像就是 http://www.csdn.net/new/abc.aspx,即在根路径下加一层虚拟路径/new,但镜像内容还是从实际页面取得的,只是做一定的处理,比如给页面替换一个logo、顶部加几行信息等,用的Response.Filter。

这个虚拟镜像有一个入口,比如说首页上的链接 http://www.csdn.net/new/start.aspx。在global.asax中将对所有带/new路径的请求进行像上面所说的额外处理。如果不带/new路径,但是Request.UrlReferer是虚拟镜像路径,也就是带有/new,那么该请求也应该转到该页面的虚拟镜像上,但还要使让浏览器上的地址变成一个镜像地址。一是为了让浏览者知道这是一个新的网址,二是为了保持 Request.UrlReferer的镜像特性。因为页面很多,每个页面链接又很多,这样使新的镜像页面,打开的链接依然是镜像页面,因为我不能改变原有页面文件里的链接。

说了这么多,可能未必明白,贴一下我现在global.asax的处理方式,先Redirect再Transfer。

string VirtualPath = "/new"; string Root = "http://www.csdn.net";
if (Url.Contains(VirtualPath))
{
addFilter(); //这方法是设置Response.Filter
Server.Transfer(Url.Replace(Root + VirtualPath, ""));
return;
}
if ((Url.Contains("new/start") && !Url.Contains(VirtualPath)) || (Request.UrlReferrer != null && Request.UrlReferrer.ToString().Contains(VirtualPath)))
{
Response.Redirect(Url.Replace(Root, Root + VirtualPath));
}

这样对于普通页面基本可以用,但是一旦页面回发就有问题了,我在 form上加onsubmit="this.action=document.location.href"可以回发到虚拟路径,但是虚拟路径上该如何处理请求并将结果返回?
如果在实际路径处理,处理后该如何让浏览器地址为镜像地址(Request.Urlreferer)?
好像 Server.TransferRequest可以实现,但要IIS7.0+.Net 3.0支持。除此外有什么好的方式呢?
...全文
133 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsuswy 2009-04-25
  • 打赏
  • 举报
回复
写一个HttpModule做地址转换。
coodd 2009-04-25
  • 打赏
  • 举报
回复
现在正在研究IHttphandler,找到答案就结贴。
coodd 2009-04-25
  • 打赏
  • 举报
回复
我好像可以解决了:)
结贴给分。不过解决方案就不贴了,回答没有有帮助的。
蓝海D鱼 2009-04-24
  • 打赏
  • 举报
回复
IIS7.0+.Net 3.0支持 没研究过
lomiolian 2009-04-24
  • 打赏
  • 举报
回复
up
kfps8kfps8 2009-04-24
  • 打赏
  • 举报
回复
有些复杂,关注...
wujinjian2008n 2009-04-24
  • 打赏
  • 举报
回复
up
coodd 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 igelf 的回复:]
url重写以后保持postback地址,看看有没有帮助.
http://www.svnhost.cn/Article/Detail-123.shtml
[/Quote]
发贴前这篇刚刚看过,但我不能改变已写好的页面代码。
coodd 2009-04-24
  • 打赏
  • 举报
回复
我连链接都不能改,你说我还能改动结构吗
igelf 2009-04-24
  • 打赏
  • 举报
回复
url重写以后保持postback地址,看看有没有帮助.
http://www.svnhost.cn/Article/Detail-123.shtml
arjsyy 2009-04-24
  • 打赏
  • 举报
回复
指间的风 2009-04-24
  • 打赏
  • 举报
回复
你在你的文件夹上加一层不就得了。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧