• ベストアンサー

ある条件を満たす場合のみ読み込みを許可するページ‥

よろしくお願いします。 フレーム中にあるページがあるのですが、そのページのURLを調べて、 直接URL欄に入力しても、そのページにジャンプはできず、 トップページに戻るようになっています。 これは一体どのように行っているのでしょうか? 直リンクを貼られるのを防ぐのにも非常に有効なので、ぜひ知りたいのですが‥。 よろしくお願いします!

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

  • ベストアンサー
回答No.3

>フレーム中にある この条件でなら JavaScript でもある程度は出来ます。 JavaScript で親ファイルのアドレスを調べ 想定外のアドレスならトップページへ戻る様に記述すれば良いだけです。 JavaScript が無効の場合はどうするか。 JavaScript が有効である事を必須とするならば無効の時にリダイレクトさせればよい訳で・・・。 noscript に meta の Refresh を記述。 まぁブラウザに JavaScript を無効のリダイレクトも無効とされるとお手上げですが、 直リンク対策が目的ならある程度使えるかも・・・。 尚、閲覧者の操作への対策だったり JavaScript が無効でもフレーム内での適切な閲覧なら表示したいなどという場合は、サーバ側で(リンク元を取得するなど)なんらかの操作をするしかないでしょう。

put74
質問者

お礼

ありがとうございます。試しに当該のサイトにてJavascriptを無効にしてみると、リダイレクトせず、今までとは違った反応を示しました。 全てがこれで解決した訳ではなさそうですが、すごく前進した気がします。 Javascriptのスキルがまだまだ拙いので、どれぐらい時間がかかるか分かりませんが、 色々試してみたいと思います。 ありがとうござまいした!

その他の回答 (3)

noname#60878
noname#60878
回答No.4

リファラ見て、403エラーになるようにして・・・ 403のメッセージのかわりに、所定のページを表示させるだけで可能。(サーバの設定で、ユーザのディレクトリ内で .htaccess が使えるという条件がありますが。) その関係のディレクトリ内に .htaccess 置いて、ここに <Files ~ 該当する被呼ファイルの条件(正規表現) > SetEnvIf Referer "想定される呼出し元ファイル" ref_ok order deny,allow deny from all allow from env=ref_ok </Files> ErrorDocument 403 飛ばす先のページのURL を置けば済みます。SetEnvIf の行は複数書けます。 応用として、特定のブラウザ等だけ排除/許可したり、特定のアドレスからのアクセスだけ排除/許可したりするのにも利用できます。 私の所では、許可した所以外からの直リンク禁止したり、特定のサイトからの訪問者にのみ「お知らせ」を見せるのに使用しています。 課題は、Refererを返さない設定のユーザの判断。上記であれば、返さない者はすべて禁止されます。リファラ無しは許可するならば、許可条件に "^$" を追加してください。

put74
質問者

補足

なるほど、こちらも簡単で確実そうですね。 .htaccessは使える仕様なので、一度試してみて、お礼に戻ります。 ありがとうございました!すごい!

回答No.2

簡単なものだとJavaScriptを使用しています。 history.go("http://example.com/"); とページの頭の方で記述し、 一定の条件が満たされていなければトップに戻す といった事をしているのかと。

put74
質問者

お礼

ありがとうございます。 おかげさまでJavascriptでもできそうなことが分かりました。 色々試してみたいと思います!

回答No.1

それはHTMLだけでは出来ません。 動的にHPの内容を変化させる事の出来るプログラム言語を利用して可能となります。 Perl/CGI、PHP、JSPといった言語がそれにあたります。 それらの言語は、サーバ側で処理を行い、 結果をクライアントに返すという、サーバサイドな言語です。 (HTMLやJavaScriptはクライアントサイドであり、 書かれた内容を動的に変更する事は出来ない) それら動的言語に持つセッションという管理機能を利用して制御を行います。 トップページから来た時はセッション情報を持っており、 直リンクされた時はセッション情報を持ってない状態になります。というより、そういう作りにします。 つまり、セッション情報がない時、強制的にトップページへ飛ばす、という処理が可能になります。

関連するQ&A