【发布时间】:2011-01-26 15:11:11
【问题描述】:
将请求外部 URL 的用户重定向到某种告别页面的最佳方式是什么?
我知道我可以努力安装某种类似 mod_rewrite 的模块。但是我不能在 global.asax 或母版页中执行某种 Page_OnRequest 类型的函数吗?
【问题讨论】:
标签: c# asp.net global-asax
将请求外部 URL 的用户重定向到某种告别页面的最佳方式是什么?
我知道我可以努力安装某种类似 mod_rewrite 的模块。但是我不能在 global.asax 或母版页中执行某种 Page_OnRequest 类型的函数吗?
【问题讨论】:
标签: c# asp.net global-asax
在将它们转发到最终目的地之前,您可以让这些 url 实际上指向您自己网站上的重定向页面:
<a href="redirect.aspx?url=stackoverflow.com">Stack Overflow</a>
然后你可以对重定向做任何你想做的事情,它可以工作,以便重定向隐藏 url、对其进行编码、添加参数等。
【讨论】:
Page_Render 事件以在它们“走出门”时捕获这些 url。
最简单的方法是使用jQuery将点击事件挂钩到页面上的所有标签上:
$(function(){
$('a').click(function(e){
var proceed = true ;
var anchor = $(this) ;
var href = anchor.attr('href') ;
var isExternalUrl = CheckForExternalUrl( href ) ;
if ( isExternalUrl )
{
e.PreventDefault() ;
window.location = "outside_link.aspx?url=" + href ;
proceed = false ;
}
return proceed ;
}) ;
}) ;
任何被点击的链接都会触发事件处理程序。外部 URL 将导致页面 outside_link.aspx 与查询字符串中的目标 URL 一起加载。内部 URL 将正常运行。
简单。
【讨论】: