2011-02-02 15 views
0

したがって、いくつかの文字または数字で始まるかどうかに基づいてURLをリダイレクトしようとしています。後に続くURLの最初の2文字が「A2」または「a2」で始まり、URLの最初の2文字を削除してから、「A2」または「a2」を特定のディレクトリパスに置き換えると、サイト訪問者をリダイレクトする必要があります。URLエイリアスの最初の2文字に基づいてURLをリダイレクトする

ここでは具体的な例を示します。ユーザーがクリック(または、ブラウザのアドレスバーにタイプ)

http://www.example.com/A2d39g 

または

http://www.example.com/a2d39g 

場合は自動的に何もない、彼らの個々のタイピングの価値も

http://www.example.com/product/d39g 

にリダイレクトされますこのURLはメール内のラベルから読み取っていますが、必ずしもリンクをクリックしているわけではありません。もともと私はjQueryを使ってこれを行うことを考えていましたが(以下の解決策のいくつかに注意してください)、この投稿を修正しました。これは.htaccessファイルを使ってこれにアプローチする方が良いでしょう。

+0

はかなり理解しません。あなたがリンクをクリックしたときにこれをしたいのですか?彼らがページに到着したときは?後者ですが、これはサーバー側の機能ですが、「A2d39g」と呼ばれるページを持たない場合 – Victor

+0

ビクターさん、別のディレクトリに置く必要のある小さなURLスクリプトを使用していますが、 URLからディレクトリパスを削除しようとしています。その代わりに、jQueryがURLの最初の2つの値をチェックする条件文を記述し、一致した場合、指定されたディレクトリにユーザをリダイレクトする方法を見つけようとしています。これをもう少し説明するために投稿を更新します。 – flinx777

答えて

0

Apache mod_rewriteでこの種のリダイレクトを行うことができます。 httpdの設定ファイルに次のようなものを追加してください:

RewriteEngine On 
RewriteRule ^/[aA]2(.*)$|^/(.*)[aA]2$ /product/$1 
+0

ちょっとPhssthpok、その情報をありがとう。質問、私はそれをルートディレクトリの私の.htaccessファイルに落とし、それが許可777を持っていることを確認しましたが、リダイレクトしていません。これをどうやってテストするかは不明です。 – flinx777

0

ブラウザでブラウザで直接行う方法はありません。多くのブラウザでは、悪質なJavaScriptがユーザーを追跡できないように、完全なURLをwindow.locationから取得することはできません。これを行う最善の方法は、サーバー側で行うことです。 JavaScriptからのリダイレクトを行う場合は、おそらくAJAXリクエストをサーバーに送信し、HTTP refererヘッダーが出てきたページを示して、希望のアクションで応答できるようにする必要があります。

1

See a demo of the following here.

私たちが行う必要がある最初の事はclickイベントを結合して、デフォルトの動作を妨げるされています。そして、

$('.redirMe').click(function(e){ 
    e.preventDefault(); 
}); 

、このクリック機能の中に、私たちは分割し、サブのシリーズを実行しますコード値をテストするために分割する必要があります。私はリンクがあなたが与えたものより複雑ではなく、ルートホストとそれに続く簡単な英数字コードであることを前提としています。

var th = $(this).attr('href'), // get the href 
    ah = th.split('/'),  // split it up 
    code = ah[ah.length - 1], // grab the last value (the code) 
    c2 = code.substring(0, 2), // grab the first two code chars 

その後、我々はそうでない場合は訪問、ホストを取得し、最初の2つの文字は、彼らがa2と一致するかどうかを確認するためにtoLowerCaseを変換し、その場合は、製品へのリダイレクトをテストするために、スプリットhrefの末尾からコードをpopます404ページ:

redr = (c2.toLowerCase() == "a2") ? 
     ah.join('/') + '/product/' + code.substring(2) : 
     ah.join('/') + '/404; 

次に、window.location.href = redrをリダイレクトするように設定できます。

再び、here's sample code of the above

+0

お返事ありがとうございました。このソリューションを使用する際の唯一の問題は、クラスをリンク ".redirMe"に関連付ける必要があることです。私は投稿でそれを明らかにするでしょう。あなたの答えを提供してくれてありがとう...私はそれを感謝します! – flinx777

関連する問題