• ベストアンサー

トップページからのみのアクセスに限定したい

HPを製作しています。検索エンジンでトップページ以外でのヒットや直リンクで正確なヒット数が把握できなくて困っています。良い方法がありましたらよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.4

セッションが使えるのは#1の方が書かれている言語です。 あなたの環境によって使えるものが違います。 しかし、初心者ということで全ページを他の言語で書くのはつらいですね。 色々問題がありますが、JavaScriptとCookieを使って簡単に実現できます。 例を書いたので載せておきます。 問題は、見る相手のブラウザ環境によって無効化されることです。 下で紹介しているサンプルの関数を用いても良いです。 Cookieについて http://tohoho.wakusei.ne.jp/wwwcook.htm JavaScriptのCookie処理関数サンプル http://www.age.jp/~dfj/javascript/function/cookie_func.html Cookieを用いたセッション管理(CGIなので参考までに) http://www.rfs.jp/sitebuilder/perl/03/04.html 例) ・トップページ <HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- function cookie_set(){ //セッション識別用の文字列をセット var en_cookie = "セッション"; //文字列を暗号化 en_cookie = escape(en_cookie); //Cookieに文字列をセット document.cookie = "session="+en_cookie+";"; } // --> </SCRIPT> </HEAD> <BODY onLoad="cookie_set()"> </BODY> </HTML> ------------------------------------------ ・各ページ <HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- function cookie_read(){ //Cookieを読み込む var session_cookie = document.cookie; //文字列を抜き出す session_array = session_cookie.split("="); var session_data = session_array[1]; //文字列の暗号化を復元 session_data = unescape(session_data); //文字列を判定し違っていたらトップへ飛ばす if(session_data != "セッション"){ location.href="top.html"; } } // --> </SCRIPT> </HEAD> <BODY onLoad="cookie_read()"> </BODY> </HTML>

a11806
質問者

お礼

ありがとうございました。大変助かりました。

その他の回答 (3)

  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.3

アクセスカウンタに関しては他の方の書かれている通りIPアドレスでの重複禁止をした方がよいですね。 あとは検索エンジン対策は下記を<HEAD></HEAD>内に記述してください。 <META NAME="ROBOTS" CONTENT="NONE"> <META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW"> アクセス制限を掛ければトップを通らないと他のページに飛べないように出来ます。 #1の方が書かれているのはそのアクセス制限です。 セッションが使える環境なら良いのですが、CGIのみでも可能です。 やり方はセッションと同じです。 全ページCGIにしてトップページで変数に値をセットし、各ページの最初でその変数があるかどうか判断して ない場合はトップページに転送するというやり方です。 CGIが分かるという前提で書きましたが、分からない場合は補足か他に質問してください。

a11806
質問者

補足

ありがとうございます。私のHPはトップヘージにCGIページ?とHTMLページへのリンクが張ってあります。セッション変数等調べてみたのですがどのように導入すればいいかわからずで。初心者なもので。よろしくお願いします。

  • marimo_cx
  • ベストアンサー率25% (873/3452)
回答No.2

access_logをあらゆる方法で解析するしかないでしょうねぇ。 私がやっているのは15分の分解能で同一IPは1訪問、連続時間帯での同一IPも1訪問などとする『ほぼ実数カウンター(自称)』という手法を使っています。 サーバーを自由に操作する権限が必要ですが。

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

いくつかパっと思いついたものを列挙します。 わからないキーワード等があれば補足します。 方法1 アクセスカウンタには一日にある同一のIPからのアクセスを一件とカウントするものがあります。それを全ページにカウントする機能だけ着ける。(カウントの表示はトップページのみ) 方法2 全ページ、ASP、JSP、PHP4などで構成し、トップページにセッション変数書き込み機能を実装する。 他のページではセッション変数読み込み機能をつけ、変数が登録されていない場合にはトップページへリダイレクトする。 方法3 2の方法をCookieで実装する。 なんにしてもただHTMLだけのサイトだとちょっと難しいように思えます。

a11806
質問者

補足

早速のご回答ありがとうございます。私の説明の足りない部分がありました。CGIのページもありまして。例えば BBS.cgi 等。トップぺージからのみのというのはやはり難しいのでしょうか。