2011-01-26 22 views
0

外部URLをリクエストしたユーザーを別のページにリダイレクトするにはどうすればよいですか?外部URLを出口ページにリダイレクト

mod_rewriteのようなモジュールをインストールするのに苦労するかもしれないことは知っています。しかし、私はglobal.asaxまたはマスターページでPage_OnRequest型の関数を何らかの形で行うことはできませんか?あなたはこれらのURLが実際に最終的な宛先にそれらを転送する前に、自分のサイトにリダイレクトページを指す可能性があり

答えて

3

最も簡単な方法は、ページ上のすべてのタグにクリックイベントをフックするための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は正常に動作します。

シンプルです。

+0

私はdojoを除いてこのことを考えていましたが、JavaScriptを無効にしたり、 – Dexter

+0

EndRequest()をオーバーライドするHttpModuleを記述するか、global.asaxのApplication_EndRequest()で実行します。実装をHtml上で繰り返し実行し、外部リンクに必要なリンクフィックスアップ。http://www.15seconds.com/issue/020417.htmを参照してください。 –

5

<a href="redirect.aspx?url=stackoverflow.com">Stack Overflow</a> 

を次に、あなたがリダイレクトを望んでいたものは何でも行うことができ、それは可能性がありリダイレクトが、URLを隠し、それをエンコード、パラメータを追加したように働いていたなど

+0

これはかなり一般的な方法です。 – DashTechnical

+1

@DashTechnical - これはちょっとした "大きな兄弟"のように見えるので、私が関与している人ではありませんが、いくつかのサイトで私が見たことがあります。 –

+0

すべてのリンクが既に書かれている状況はどうですか?見つけて+置き換えるだけですか? – Dexter

関連する問題