再度同じ質問です。

検索エンジンにHPのTOPページ以外のページが上位表示されています。
検索エンジンよりのアクセスでTOPページ以外からの場合、強制的にTOPページに移動させるスプリクトを知りたいです。
refererを利用すればできるような気がするのですが・・。
ノートンでFWの設定で動作しないというのは可です。
FWで空になっていた場合は、TOPページに移動せず通常のリンク先で構いません。
.htaccessは使用しない方法が知りたいです。
また、検索エンジンにTOPページ以外がかからない設定という回答は不要です。
以前も同様の質問をしましたが、不都合な現象が出ました。
検索エンジン(YAHOO)から飛んできたことを判別してTOPに振り分けるというスプリクトをお願いします。
過去の質問はこちら。
http://q.hatena.ne.jp/1159616527
過去にも回答していただいた方には感謝しています。こちらの確認不足でした。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2006/10/01 15:20:45
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:hamasta No.2

回答回数38ベストアンサー獲得回数2

ポイント200pt

1の回答で良い気もしますが、手抜きで書くなら以下を

リファラチェックしたいhtmlに貼るだけでも大丈夫だと思います。

(jump_uri=は自分のサイトにする)


<script style="text/javascript">
jump_uri = "http://d.hatena.ne.jp/"; //ジャンプさせたいページのuri
search_array = new Array();
search_array[0] = "search.yahoo.co.jp"; //referrerにこの文字があればジャンプ
search_array[1] = "www.google.co.jp";
//search_array[数字]=""; はいくつ追加しても良い
//↓リファラチェック
for ( i in search_array ) {
    re = new RegExp( search_array[i], "i" );
    if ( document.referrer.search( re ) >= 0 ){
        location.href = jump_uri; //チェックにひっかかったらジャンプ
    }
}
</script>

id:tabatakusa

何度も申し訳ございません。

今度こそ問題が解決いたしました。

以前のものだと同一ページで条件抽出した場合に

TOPに再移動してしまう問題があったのですが

これなら大丈夫です。

本当に助かりました。

2006/10/01 15:17:05

その他の回答1件)

id:kurukuru-neko No.1

回答回数1844ベストアンサー獲得回数155

ポイント100pt

以前あったURLの処理方法を応用すれば

可能です。

http://www.red.oit-net.jp/tatsuya/java/referrer.htm

関数にした場合

Yahoo,GoogleからReferされた場合は、TOP Page

例:

function ReferURLCheck()

{

var keepurl = new Array();

var moveurl = new Array();

// Referオプション部分を除く

if( document.referrer.length==0 ) {

// 直接参照

myRef="";

return 0;

} else {

myRef = document.referrer;

myRefOpt=myRef.indexOf("?" , 0);

if( myRefOpt >= 0) myRef = myRef.substring(0 , myRefOpt);

};

// 移動先URL

moveTop = "http://www.yahoo.co.jp";

// 移動しない参照元指定

// URLが複数ある場合順番に配列に追加して行く

keepurl[0] = moveTop;

// 強制移動する参照元指定

// URLが複数ある場合順番に配列に追加して行く

moveurl[0] = "http://search.yahoo.co.jp";

moveurl[1] = "http://www.google.co.jp/search";

// 強制移動しないURLの場合 move=0

// 強制移動する場合 move=1

move=1;

for(i in keepurl) {

if( myRef.indexOf(keepurl[i],0)>=0) {

move=0;

break;

};

};

if( move == 1 ) {

move=0;

for(i in moveurl) {

if( myRef.indexOf(moveurl[i],0)>=0) {

move=1;

break;

};

};

};

delete keepurl;

delete moveurl;

if( move != 0 ) {

location.href = moveTop;

};

return 0;

}

id:tabatakusa

丁寧にありがとうございます。

うれしいです。

2006/10/01 15:15:34
id:hamasta No.2

回答回数38ベストアンサー獲得回数2ここでベストアンサー

ポイント200pt

1の回答で良い気もしますが、手抜きで書くなら以下を

リファラチェックしたいhtmlに貼るだけでも大丈夫だと思います。

(jump_uri=は自分のサイトにする)


<script style="text/javascript">
jump_uri = "http://d.hatena.ne.jp/"; //ジャンプさせたいページのuri
search_array = new Array();
search_array[0] = "search.yahoo.co.jp"; //referrerにこの文字があればジャンプ
search_array[1] = "www.google.co.jp";
//search_array[数字]=""; はいくつ追加しても良い
//↓リファラチェック
for ( i in search_array ) {
    re = new RegExp( search_array[i], "i" );
    if ( document.referrer.search( re ) >= 0 ){
        location.href = jump_uri; //チェックにひっかかったらジャンプ
    }
}
</script>

id:tabatakusa

何度も申し訳ございません。

今度こそ問題が解決いたしました。

以前のものだと同一ページで条件抽出した場合に

TOPに再移動してしまう問題があったのですが

これなら大丈夫です。

本当に助かりました。

2006/10/01 15:17:05
  • id:kurukuru-neko

    正規表現だと"."はSCAPEした方がよいです。
    "search\\.yahoo\\.co\\.jp"
    "www\\.google\\.co\\.jp"

    >if(document.referrer.search( re )>=0){
    if(document.referrer.match( re ) ){
  • id:tabatakusa
    kurukuru-neko 様
    丁寧な説明ありがとうございます。
    やさしさに心より感謝いたします。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません