• 締切済み

直接アクセスを防止するためのリダイレクト

あるサイトのトップページに、画像をクリックすると onClick=open...で小画面が開く仕組みをしてあります。 この操作で開く小画面に直接アクセスされた場合に自動的にトップページにリダイレクトされる仕組みを作りたいのですが、どうすれば良いでしょうか? リファラーで、どこのページから跳んできたかを取得して、リンク元がindex.htmlではない場合にはindex.htmlに転送されるというJavascriptは見つけたのですが、これだと、onClick=open...で小画面を開くという形ではこのページにアクセスできなくなってしまうようです。 まあ、スクリプトでウインドウを開くのですからリンクもと情報がついてこないのは当然ですが。 この小画面は、開くウインドウサイズを指定する必要があったり、アドレスバーを表示させたくないなどの理由から、ターゲットを_blankにして 普通のリンクにすればいいという方法ではこの問題はクリアできません。 何とかならないでしょうか?

  • MORGEN
  • お礼率100% (466/466)
  • HTML
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

子windowでは、親windowのURLを参照できます。 子windowで、<script>alert(window.opener.document.URL);</script>してみて下さい。 これをrefererの代わりに使うというのはどうでしょうか。 他にも方法はあると思います。例えば、cookieを使う方法です。 親windowで画像をクリックした瞬間に、javascriptで時刻情報を含むcookieをセットします。子windowでそのcookieの値をチェックして、10秒以内に発行されたものであればOKとするとか。

MORGEN
質問者

お礼

ご回答ありがとうございました。 window.opener.document.URLというものを初めて知って、「これはいいアイデアだ」と思って色々いじってみたのですが、元ウインドウが存在する場合はおっしゃる通りアラートが表示されるもののダイレクトアクセスだとアラート自体が出ないですし、そうなると余計にこのwindow.opener.document.URLをどう活用すれば良いかが解らず、一ヶ月も経った今も前に進めない状態です。クッキーを扱うjavascriptというと余計に全く未知の世界なので今のところ歯が立たない状態で…。 せっかくのお知恵を活用できなくてすみません。 どうもありがとうございました。

関連するQ&A

  • リダイレクトURLのなぞ

    先ほど以下の質問をしたものです。 URLでのリダイレクト? http://okweb.jp/kotaeru.php3?q=1213110 http://rd.yahoo.co.jp/shopping/ymain_cbox/left/?http://shopping.yahoo.co.jp/food_and_drink/ というような二つのURLに?を挟んだURLは何をやっているのかという質問でした。 無事回答を頂き、apacheかCGIが?以降のURLへ転送しているのだと理解できました。 そこで思い出したのですが、確か2chでも似たようなものがあったように思います。2chの場合は、リファラーによってどこのスレッドから飛んできたのかということが特定されると不都合なので、間にリダイレクト専用のページ?のようなものを挟むことで、どこのスレッドにリンクが張られようが、そのリンクへのアクセスはすべて一度そのリダイレクト専用ページに飛ばされ、そこから再度目的のページへ飛ぶような仕組みになっているから、リファラーが特定されないというような話を見たことがあります。 しかしYahooにはそんな理由はあてはまらないと思います。リファラーを偽装するのが目的でないとしたら、Yahooは一体なんのために、こんなリダイレクトの仕組みを設けているのでしょうか? カテゴリがここであっているか分からないのですが、情報がありましたらお教えください。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • phpでのリダイレクト処理について

    phpで index.php にアクセスがあった時に、 以下の様に top.php へリダイレクトさせたいと思います。 header("Location:top.php"); exit(); この時、top.phpが表示された時のブラウザのアドレスバーは index.php のままです。 アドレスバーのURLを top.php にする方法はないですか?

    • 締切済み
    • PHP
  • httpsからhttpへリダイレクトさせたい

    Googleの検索結果で、なぜかトップページだけがhttpsでインデックスされてしまっています。 SSLを利用していないのでエラーが出てしまいます。そこで下記のようにリダイレクトをさせたいと考えています。 https://example.com/ ↓ http://example.com/ .htaccessを利用して行いたいのですが、どのように記述をしたらいいでしょうか。 色々試してみたのですが、トップページだけというのがうまくいきません。 よろしくお願いします。

  • ブックマークからのアクセスを禁止したい。

    こんにちは。 自分のサイトでのことなのですが、 index.htmlからtop.htmlにリンクしています。 そのtop.htmlなのですが、 index.htmlからtop.htmlにアクセスしてほしいのですが、 直接top.htmlにアクセスしてくる人が非常に多いのです。index.htmlにカウンタをつけているので、index.htmlからtop.htmlにきてほしいのです。 検索の結果辿りついたり、ほかのページからもリンクはあるのですが、それらは良いのです。 「ブックマークからのリンク」のみアクセスを制限したいのです。 全くアクセスできないようにするのではなく、ブックマークからアクセスすると「ブックマークから直接アクセスはできません。index.htmlからアクセスしてください」というコメント欄と、index.htmlへのリンクがあるページに飛ばしたいのです。 そのような方法は可能でしょうか。 可能ならばどのような方法があるでしょうか。 ブックマークからのアクセスを禁止したいのは、「top.html」のページのみで良いのです。 よろしくお願いします。

  • gooブログで記事中のリンクを別ウインドウで開くには?

    gooブログの記事中にリンクを入れる場合、別ウインドウで開くようにしたいのですが ="index.html" target="_blank"> にするとまったく別のgooのページにアクセスされます。 別ウインドウで開くのは禁止されているのでしょうか? 方法があれば教えてください。 よろしくお願いいたします。

  • 特定のリファラーのみリダイレクトでURLを指定したい(.htaccessの書き方)

    自分の管理外のWebサイトA,B,Cから"example.com"のトップページへ リンクされています。リンク元のURLは変更できないので、A,B,Cの 特定のページからのリファラーのみ"1.html"へリダイレクト(301) したいと思っています。※URLは全てダミーです リンク元 http://site-a.jp/a.html http://site-b.jp/b.html http://site-c.jp/c.html 現在のリンク先 http://example.com/index.html 移転先 http://example.com/1.html 【私が書いた.htaccessの内容】 SetEnvIf Referer "^http://site-a\.jp/a\.html" ref_a Redirect permanent /index.html http://example.com/1.html env=ref_a これではエラー500が返ってしまいだめでした。移転前と移転先は 同じなので、できればA,B,Cをまとめてセットして、リダイレクト の行は1つにしたいと思っています。無理なら1つずつ書きます。 よろしくお願い申し上げます。

  • SSIでリダイレクトできないでしょうか?

    あるページにアクセスがあったら、IPアドレスをチェックして特定のIPアドレスからのアクセスのみ他のページにリダイレクトし、こういう処理をしたというログを保存したいのですが、方法がわかりません。 現在は、SSIで呼び出したスクリプトでIPチェック後、該当すればJavascriptのtop.location.hrefを書き出しています。この方法だとJavascript自体をOFFにされると機能しません。 METAタグのREFRESHではページをロードしてからのリダイレクトになってしまいます。 ページへのリンク自体をCGIへのリンクにしてLocationヘッダを出力すればいいのでしょうが、直接ページにアクセスされるとこの手も使えません。 .htacceessでdenyして、403のエラードキュメントとして上記の処理をするページを作ってみましたが、このエラードキュメント自体にアクセスできません(denyしているので当たり前ですね)。 何かいい方法はないでしょうか?

    • ベストアンサー
    • CGI
  • リダイレクトの方法

    たとえば、 http://www.XXX.ne.jp/というサイトがあった場合、 http://www.XXX.ne.jp/abcde.html というようなページがないサイトにアクセスした場合、そのサイトのある特定のページにリダイレクトしたいのですが、いい方法はないでしょうか? できれば、htaccess ファイルを使ったものがいいのですが、 http://www.shtml.jp/htaccess/redirect.html の方法でやってみると、実際にある index.html にアクセスしてもリダイレクトしてしまいます。 なにかいい方法はないでしょうか?

  • .htaccessによりリダイレクトされるサイトの一部だけリダイレクト

    .htaccessによりリダイレクトされるサイトの一部だけリダイレクトされないようにできませんか? ドキュメントルートhome/直下の.htaccessには、下記の記述がされています。 RewriteEngine on RewriteRule .html$ http://www.sample.com/index.php ↑これは、拡張子が.htmlのページを表示しようとしたらwww.sample.com/index.php(TOPページ)へリダイレクトさせるという意味かと思うのですが、 home/webalizer 直下には、自動的に○○○.htmlファイルが生成されるようになっており、 このファイルを開こうとしても、TOPページにリダイレクトされてしまい、 FTP等でダウンロードしてからでないと内容を確認できません。 ルート直下の.htaccess は手を加えたくないので、 home/webalizer直下に、何らかの記述の.htaccessファイルを置くことにより、webalizer内の.htmlファイルだけはリダイレクトせずに開けるようにできないものでしょうか?

    • ベストアンサー
    • PHP
  • .htaccessでリダイレクト

    サイトのディレクトリ構造やファイル名を変えたため、 外部からのリンクが切れてしまっています。 .htaccessを設置したディレクトリ以下で ファイルが見つからない場合、TOPページにリダイレクト、 という動作を実現するにはどう記述すれば良いのでしょうか。 TOPページを http://www.hoge.com/ とすると、 とりあえず思いつくのは ErrorDocument 404 / なのですが、404エラーをエラー表示以外の リダイレクトに使うのが正しいのか分かりません。 こういう目的のリダイレクトの書式もあるのでしょうか。 よろしくお願いします。

専門家に質問してみよう