• 締切済み

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で可能でしょうか? もしくは上記の方法でなくても私が考えている事ができる組み方はありますでしょうか? プロフェッショナルな皆様のお知恵をお借りしたく、書き込みさせて頂きました。 何卒宜しくお願い致します。

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

#1です。 >検索からブログ記事に直でで来られる方はindex.htmlを通さずに >index.php?id=***で表示されてしまいます。 >ですので、index.phpのどのid(記事)に直アクセスしてもまず全て >index.htmlに飛ばします。 その際に、iframe内には最初のid=***を生かしてindex.php?id=***を表示させるようにすればいいのではないかと書いたつもりですが…? >これを防ぐ為に、document.referrerでリンク元を調べてindex.html >でなければ検索等で来られた→id指定と言う流れにしたかった訳 referrerでなくても、アクセス時のロケーションを調べてid指定があればそのidのページをiframe内に表示するだけでよいのではないかと書いたつもりです。(←表示ページがindex.htmlではない場合) 全体のページ構成が理解できていないので、ある仮定のもとで回答しています。 さらに、これらの処理がサーバ側(phpなど)で可能ならば(質問者様の環境で可能なのか不明なので)、そのほうが望ましいのではないかと書きました。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

プロではありませんので、素人考えです。 ご質問の1~4の区別がいまいちわかりませんが… 表示するページのトップが常にindex.htmlで、その中のiframeにブログ記事(~index.php?id=300 などか?)が表示されるという構成であるという解釈でよいのなら、必ずしもreferrerを調べなくても、直接locationを調べればよいのでは? location.pathnameが~index.htmlならばOK、それ以外(~index.phpなど)ならlocation.hrefをindex.htmlへ書き換え。 その際に、サーチ部(?以降)があれば、index.html?id=300などとしておく。 index.htmlのソースはiframeにデフォルト表示。ロード時にサーチ部があれば、javascriptでiframeのsrcを~index.php?id=300などに変更。 (スクリプトオフのユーザには効果ありませんが…) もしphpの変更が可能であるなら、上記の処理全体をphp側で行えば、iframeのsrcも最初からセット可能ですし、javascriptも使用しないですみそうな気がしますが。

crassic
質問者

補足

fujillin様、有難うございます。 >ご質問の1~4の区別がいまいちわかりませんが… >表示するページのトップが常にindex.htmlで、その中のiframeにブログ記事(~index.php?id=300 などか?)が表示されるという構成であるという解釈でよいのなら おっしゃる通りです。 ただ少しばかり説明が抜けておりました、申し訳ありません。 ブックマークから閲覧される方はindex.html→index.phpの 流れでこちらの意図通りにサイトが表示されます。 ですが、検索からブログ記事に直でで来られる方はindex.htmlを通さずにindex.php?id=***で表示されてしまいます。 ですので、index.phpのどのid(記事)に直アクセスしてもまず全てindex.htmlに飛ばします。 そうするとindex.htmlの中のiframe srcのindex.phpははidを指定していないのでお目当ての記事ではなく、 常に最新の記事が表示されてしまいます。 これを防ぐ為に、document.referrerでリンク元を調べてindex.htmlでなければ検索等で来られた→id指定 と言う流れにしたかった訳です。 javascriptもイヌでも分かるJavaScript講座様のものをそのままコピペする程度の知識ですので 詳しい説明は分からず、申し訳ありません。 良い打開策があれば引き続きご教授お待ちしております。

関連するQ&A

専門家に質問してみよう