• ベストアンサー

リンク先がgoogleなどの場合

JavaScriptのdocument.referrerを使ってリンク先を取得するアクセスログを作りました。 普通のサイトからでは問題はないのですが、googleなどの検索サイトから飛んでくる人のリンク先の表示が、 http://google.yahoo.co.jp/bin/query?p で止まってしまいます。 検索文字まで表示するにはどうすればいいでしょうか? 回答よろしくお願いします。

  • Perl
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • retr
  • ベストアンサー率75% (30/40)
回答No.2

http://google.yahoo.co.jp/bin/query?p の後には、通常、=が続きますよね。 GETにおいて=は特別な役割を果たすので、アクセスログを取るCGIなどに、GETでこのリファラーをわたしても、p以降が消えるのは当然です。 これを避けるには、CGIに、GETではなくてPOSTでリファラーをわたすか、渡す前に、リファラー文字列をURLエンコードしてください。

shotaro777
質問者

お礼

回答ありがとうございます。 なるほど、GETだからまずかったんですね。 ありがとうございます。

その他の回答 (1)

  • nipotan
  • ベストアンサー率59% (134/227)
回答No.1

何で Perl のカテゴリにこういう内容があるのかわからないのですが、 通常 Google 等でも、document.referrer には普通に QUERY_STRING は入るハズです。 「アクセスログを作りました」との事ですから、さすがにアクセスログへの書込みは JavaScript でやっていないんでしょうから、そのログへの書込みを行うプログラムに渡すデータの「渡し方」に問題があるとか、「書込み方」に問題があるとか、そういう部分を疑ったほうがいいと思います。

関連するQ&A

  • chomeでリンク先URLを取得したい

    タイトルだけでは伝わりにくいので詳細を以下に述べます。 googleなどで検索した際に検索結果のリンク先(URL)にマウスを置くと、 左下にそのリンク先のURLが表示される値を取得したいと考えています。 javascriptでどうにかできないかと探してみたのですが、参照されるhtmlページ自身の内で指定しないとだめ?なのかよくわかりませんでした。 javascriptで実現するにはどういう風にすればよいでしょうか? あるいはこのサイトが参考になるかもしれないというサイトを教えていただけないでしょうか? よろしくお願いしますm(_ _)m

  • Javascriptの変数をPHPに渡したい

    環境  サーバLinux、Apache2.0.47、PHP4.3.2で使用しています 質問  リンク元の取得のためgetenv("HTTP_REFERER")を使っていますが情報が取得できません。  クライアント側のファイアウォール(ノートンなど)が無効になっているときにしか情報が取得できませんでした。  Javascriptのdocument.referrerを使ったところ、ファイアウォール関係なく情報が取得できました。  ログ保存のためにPHPの変数にdocument.referrerを渡したいのですがどのようにすればよいのでしょうか?  下のように書いたところブラウザには正常に表示されましたが、  ログはJavascriptの制御文そのものが保存されました。  $link="<SCRIPT language='JavaScript'><!--    document.write(document.referrer);    --></SCRIPT>"; よろしくお願いします。

    • ベストアンサー
    • PHP
  • Google検索結果のリンク先がおかしい

    GoogleクロームやOperaでGoogle検索を行うと検索結果のリンク先のページがおかしい。 最近おかしいんです。 検索語句を入力して希望のページをクリックすると明らかにそのページとは違うページに行ってしまいます。 これはなぜでしょうか? 例:Yahoo知恵袋と検索→検索結果が表示される→希望してるページをクリックする→アドレスバーにはきちんとhttp://chiebukuro.yahoo.co.jp/となっているのにも関わらず明らかに違うページが表示される。 パターンはいろいろありまして・・・変なビデオサイトとかにつながったりとかしたりします。 これはどういうことなのでしょうか?大変困っています。 回答よろしくお願いします

  • googleで被リンクを増やすには

    googleで被リンクを増やすにはどうすればよいでしょうか。 12月にヤフーにグーグルのアルゴリズムが移行されるということで、 グーグルを強化したいと思っています。 また、影響力のあるリンク先(知恵袋とか)がありましたら是非教えていただけないでしょうか。 ※ 先程、link、indexコマンドを検索エンジンで試してみたのですが、結果が出ませんでした。 もう、このコマンド使えないのでしょうか。

    • ベストアンサー
    • SEO
  • リファラーのデータ送信について

    こちらの質問(http://okwave.jp/qa3205563.html)で一定の解決を見たのですが、新たな問題が発生してしまったので教えてください。 sample.htmlへの記述 <script type="text/javascript"> var ref = document.referrer ; document.write("<script type=\"text/javascript\" src=\"​http://hoge.com.info.php?ref="+ref+"​\"></script>"); </script> で、refを送信したのですが、 受け取ったrefが、googleだと、 「http://www.google.co.jp/search?hl=ja」になってしまい、&で区切られている以降のデータ(つまり「q」)が取得できません。 別質問(http://okwave.jp/qa3200959.html)で、 hrm_mmmさんの回答======================================= $_SERVER['HTTP_REFERER']が対象ならば、以下で、$query_hashに、$_GETと同様のurldecode済みデータがハッシュ配列として得られます。 $url_hash = parse_url( $_SERVER['HTTP_REFERER'] ); if( array_key_exists( 'query', $url_hash ) and strlen($url_hash['query'])>0 ){ parse_str( $url_hash['query'], $query_hash); } // あとは、$url_hash['host'] によって切り分けて検索キー取り出しをすればよいと思います。 $word = ''; if( preg_match ("/\.google\./", $url_hash['host']) ) { $word = $query_hash['q']; } elseif( preg_match ("/\.yahoo\./", $url_hash['host']) ) { $word = $query_hash['p']; } elseif( preg_match ("/\.goo\.ne\.jp/", $url_hash['host']) ) { $word = $query_hash['MT']; } ====================ここまで============================ こんなんでやればいいよ。と教えていただいたのですが、グーグルから送られたref自体にqが入っていません。 というか、?以降の1番目のクエリーしか入ってきません。 ヤフーなら ?p=~でOK gooなら ?MT=~でOK google は hl=jaが一番最初にくるので、qがとれません。 なぜ、送信されてくるreferrerに2番目以降のパラメータがついてこないのでしょうか。。。 ちなみにsample.htmlで document.write(document.referrer)をやるとちゃんと全て表示されます。

  • Googleでリンク先へ飛ぶのが遅い

    現在ブラウザはFirefoxです。 少し前から何故かgoogleで検索を行いリンク先へ飛ぶと数秒ほど白い画面でリンク先とは無縁のhttp:google見たいなページに飛びます。 そこから数秒たてば本来のリンク先に移行するのですがこの昨日いつからですか? また飛ばない設定方法や改善策ありましたら詳しい皆さん教えてください

  • リンク元のファイル名を表示したい。document.referrerだとダメ。(ソース付き)

    よろしくお願いします。 index.html→saki.htmlのようにリンクしてある、ファイルが2つあります。 saki.htmlの中で、リンク元のindex.htmlの名称を、document.referrerで表示しようとしています。 しかし、うまく動作しません。 何が違うのでしょうか? ●index.html <html> <body> <a href="saki.html">AA</a> </body> </html> ●saki.html <html> <body> <script type="text/javascript"> <!-- document.write('<p>リンク元URL:' + document.referrer + '</p>'); // --> </script> </body> </html>

  • iframe内のリンク先を動的に変更

    お世話になります。Crassicと申します。 index.html   ├about(about.html)   ├blog(index.php)   └link(link.html) といった構成の個人サイトを立ち上げております。 ここ最近、yahoo等の検索サイトからブログへ直でアクセスされ、嬉しい事なんですが私としてはTOPページである index.htmlを通して閲覧して欲しいと思ってます。 javascriptでindex.html以外のサイトからindex.phpへアクセスがあった場合はindex.htmlへ強制的に飛ばす スクリプトを色々調べて組み込んでおりましたが、そうするとお目当てのブログ記事に辿りつくのが困難で 読んでもらえないという状況に陥りました。 (アクセス解析より判明) index.htmlからiframeで読み出す場合は固定のindex.phpであり、常に最新の記事になります。 が、検索で来られた場合はindex.php?id=300と言うように検索内容によって変わります。 ですので、index.htmlへ下記のスクリプトを組み込めばいいのだと考えましたが、私の調べ方が悪いのか 見つかりませんでした。 1.document.referrerにてURL元を調べる 2.<iframe src="http://******.com/blog/index.php" name="main"></iframe>内のsrc部分をreferrerのURLに置き換える? 3.検索で来られた訳ではなく、ブックマーク等の場合はindex.phpを表示させる 4.index.php自体にブックマークされている場合もindex.htmlへ強制的に飛ばす この様な事がjavascriptで可能でしょうか? もしくは上記の方法でなくても私が考えている事ができる組み方はありますでしょうか? プロフェッショナルな皆様のお知恵をお借りしたく、書き込みさせて頂きました。 何卒宜しくお願い致します。

  • Google検索結果のリンク先表示について

    Googleのホームページから、調べたいキーワードを入力して検索ボタンを押すと検索結果が10個表示されますが、結果に出てきたページを見ようとすると、新しくウインドウが開きます。 (もしくは、すでに複数のウインドウを開いている場合は、一番最近に開いたウインドウにリンク先が表示されます) Yahoo!のように、同じウインドウで検索結果のリンク先を表示することはできるのでしょうか? ちなみに、Googleツールバー1.1から、2.0に変更してからこのようになりました。 Googleツールバーのオプション設定や、Helpで設定の方法が見つかりませんでした。 (Helpにある「検索するたびに新しいウィンドウが開かれるようにすることはできますか?」ではなく、検索結果の各ページにリンクしていきたいときに、別ページで開かないでほしいのです) よろしくお願いします。

  • リンク先

    リンクを二つ表示させるタグで <!-- function CH1(p1,p2){ window.open(p1,"window1"); window.open(p2,"window2"); } //--> <a href="JavaScript:CH1('http://inhj.co.jp/','http://google.com/')">あいうえお</a> このようなものを見つけたんですよ これやるとどちらとも別窓で開くんです こちらとしては ファイルをダウンロードした時に解説ページが開くという具合にしたいんです 片方をそのままのページに表示 片方を別窓で表示 このようなことはできるんでしょうか?

    • ベストアンサー
    • HTML

専門家に質問してみよう