• ベストアンサー

ページを読み込む前にリダイレクトするには?

Greasemonkeyを使い、 var url = location.href; url = url.replace( 'http://domainOLD' , 'http://domainNEW' ); location.replace(url); として使っています。 ミラーサイトが時々Googleでヒットし困るため新しい方のドメインにジャンプするようにしています。 ただ、どうも、古い方のページに飛んだ時、すべてのHTMLを呼んで後でジャンプしているようで動作が非常に遅く困っています。 もっと素早くジャンプすることはできないものでしょうか?

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

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.4

No.2です。 google検索の結果に特化してよいなら、検索結果のページにおいて 古いドメインのリンク先を新しいリンク先に変えてしまうとか いち例ですが、 モンキーの対象ページ http://www.google.co.jp/search?* ユーザースクリプト var res=document.getElementById("res"); var link=res.getElementsByTagName("A"); alert(link.length); for (var i=0;i<link.length;i++){ if(link[i].getAttribute("href")=="http://domainOLD"){ link[i].setAttribute("href","http://domainNEW") } } ※正規表現を使って、もっときめ細かく、置換したい部分だけ 変えた方がいいんですが、正規表現苦手なもので....

deep_tree
質問者

お礼

回答いただきありがとうございます。 とても助かりました!

その他の回答 (3)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

No2です。失礼しました。私の質問文の解釈ミスでした。 自分のサイトを引っ越したのじゃなくて、 FirefoxであるURLを見る時、そのURLだけ新しい方のURLにリダイレクト したいという事かなあ~(この解釈もまちがっていそう) にしては、 「ミラーサイトが時々Googleでヒットし困る」の意味がよくわからん

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

メタタグ利用はどうですか? 古い方のページのヘッダーに <META HTTP-EQUIV="Refresh" CONTENT="1; URL=http://domainNEW" /> としてやれば、1秒後にhttp://domainNEWに異動する。

deep_tree
質問者

補足

回答いただきありがとうございます。 質問の仕方か、カテゴリが不適切だったかもしれませんが、 このjavascriptはブラウザの拡張機能で動作させています。 そのため、たぶん、メタタグでは無理だと思います。 もし、Greasemonkeyのことでいっておられましたら、 当方の勉強不足ですので、 スクリプト中にどのように記述すればよいかわかりますでしょうか? お手数ですが、宜しくお願い致します。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

それってjavascriptでやることではないのでは? 旧サーバーの稼働状況にもよりますが.htaccessなどが 生きているならサーバーサイドで無条件にリダイレクトしてください

deep_tree
質問者

お礼

回答いただきありがとうございます。 説明不足ですみません。 あるサイトを、Googleで検索すると、 domainOLD/page1.html がヒットします。ただ、このサイトは、最近、 domainNEW/page1.html という新しいドメインでサイトを作成しており、新しいドメインの方が現在は稼働しています。 古いサイトもヒットするため毎回、新しいサイトへ手動で飛ぶ必要があり、不便を感じます。 そこで、Firefoxで見る時、Greasemonkeyのスクリプトで、上記コードを実行して、常に新しいサイトへジャンプしているのですが、古いサイトのページをすべて読み込んだ後ジャンプするため改良できない物かと思っています。 なお、私はホームページの管理者とは一切無関係ですのでサーバサイドでの制御はできません。

関連するQ&A

  • プルダウンから飛んだページにアクセスする方法

    アクセスする事が出来なくて困っています。初歩的なもので申し訳ないのですが、よろしくお願いします。 <HTML> <HEAD> <TITLE> </TITLE> <script language="javascript"> <!-- function navi(obj) { url = obj.options[obj.selectedIndex].value; if(url != "") { location.href = url; } } //--> </script> </HEAD> <BODY> <form method=post> <select name="navi">  <option value a href="URL">リンク <option value a href="URL">リンク1 <option value a href="URL">リンク2 <option value a href="URL">リンク3 </select> <input type=button value="ジャンプ" onClick="location.href =(this.form.navi.options[this.form.navi.selectedIndex].value)"> </form> </BODY> </HTML>

  • location.hrefが動かない・・・

    F5が押された場合に指定したURLに飛ばすようにしたいのですがなかなかうまくいきません・・・ ブラウザはFirefox 2.0.0.7を使用しています コードは以下の様にしております <script type="text/javascript"><!-- function key(keyCode){ if (keyCode == 116){ location.href = "http://www.google.co.jp/"; } } --></script> <body onKeyDown="key(event.keyCode)"> </body> 指定URLはGoogleにしています これ状態でF5を押してもなにも起こらず普通に更新されるだけです location.href = "http://www.google.co.jp/";の部分をdocument.write('TEST');などのようにdocumet.writeに書き換えると普通に指定した文字列が表示させます location.hrefと同様にwindow.location.hrefやlocation.replaceでも指定URLに飛ばされません documet.writeは動くのでF5が押されたかどうか判断するコードは間違っていないと思うのですが・・・ ちなみにIEでもダメでした 誰か原因がわかる方が居られましたら教えてください よろしくお願いします

  • PHP requireの後にJS実行

    PHPで外部サイトからニュースを切り出して表示させているのですが ニュースを切り出した箇所にURLを改変するJavaScriptを組み込んでいます。 静的ページでJavaScriptを稼働させると正常に動作して指定箇所のURLを書き換えます。 しかしPHPで外部から読み込ませると正常に動作してくれません。 外部から動的ロードされたデータに対してJavaScriptを動作させるにはどうしたら良いでしょうか? body onload は試しましたが駄目でした。 何方かお力添えをお願い致します。 【現在のソース】 ※動的に読み込んだニュースデータの相対参照URLに指定ドメインを付与したいです。 <!-- 動的ロード箇所 --> <ul id="news"> <a href="/news/0123456789.html"></a> </ul> <!-- ここからURL書き換えscripts--> <script type="text/javascript"> kitou(); function kitou() { var a = document.getElementById('news').getElementsByTagName('a'); var i = 0; var output; for( i = 0; i < a.length; i++ ) { a[i].href = a[i].href.replace( document.domain, 'www.google.co.jp' ); } } </script>

  • ページのジャンプ

    過去に同じような質問もありましたが、いろいろ検索してこちらの過去ログを拝見しても解決できなかったので質問させてください。 ラジオボタンで選択してボタンを押すとジャンプするプログラムを作りたいのですが、 location.href = "http://www.yahoo.co.jp/"; でジャンプしません。 こちらがソースです。 <SCRIPT language="JavaScript"> function sopp(frm){ if(frm.go[0].checked){ location.href = "http://www.yahoo.co.jp/"; } if(frm.go[1].checked){ location.href = "http://www.google.com/"; } if(frm.go[2].checked){ location.href = "http://jp.msn.com/"; } } } </SCRIPT> <form name="pon" onSubmit="return sopp(this)"> <input type='radio' name='go' value='YAHOO!JAPAN'> YAHOO!JAPAN<br> <input type='radio' name='go' value='google'> google<br> <input type='radio' name='go' value='MSN'> MSN<br> <input type="submit" name="mol" VALUE="ウインドウを開く"> </form> どうかお分かりになる方ご教授お願いします。

  • jQuery 「$」を置換対象にしたい場合

    jQuery でURL内の$を削除したいのですが、指定できません。 別の文字列にすると置換できますので、動作はできているようですが、 「$」を置換対象にするには、どのように書いたらいいでしょうか。 今指定している内容は <a class="dollarreplace" href="http://hodehode.com/url文字列途中で$が入ります" target="_blank">リンク文字</a></p> <script> $(document).ready(function() { $("a.dollarreplace").each(function() { var replace = null; var replace = $(this).attr('href').replace(/$/g,''); $(this).attr('href',replace); }); });</script> となっています。 よろしくお願いいたします。

  • 相対URLによるリダイレクト

    Locationヘッダに転送先のURLを指定する際に、相対URLをフルパスで指定すると内部リダイレクトになりますが、絶対URLを指定せずにブラウザにリダイレクトさせる方法はないでしょうか。 具体的にはこうです。 URL http://www.xxx.com/dir/from.cgi という位置にスクリプトがあるとして、ドキュメントルートにある「to.html」にリダイレクトさせたい場合、 Location: http://www.xxx.com/to.html と出力するのではなく、 Location: /to.html と出力すると、内部リダイレクトによってブラウザに返されることなく、つまりブラウザの「アドレス」欄はhttp://www.xxx.com/dir/from.cgiのまま「to.html」の内容が表示されるわけですが、そうではなく前者のように動作させたいのです(ブラウザに返してリダイレクトさせたい)。 目的は、ドメインなど絶対URLが変更になっても汎用的にスクリプトを移行できるようにしたい(絶対URLを書かなくて良いようにしたい)のですが、内部リダイレクトでは表示されるHTMLの内容によって、たとえば<img src="./image.gif">など相対パス指定の参照が正しく表示されないためです。 どうぞよろしくお願いいたします。

    • 締切済み
    • CGI
  • javascriptの動作について

    こんばんは。 直接アドレス指定などしてきたものについては、 トップページへ飛ばすことをしようと思ったのですが、 以下の記述だと、IE8では動作しましたが、GoogleCrome(11.0.696.77)、firefox(3.6.0)、safari では動作しませんでした。(location.hrefがダメなんでしょうか?) 解決策・回避策などあれば教えてください。 よろしくお願いします。 <script language="JavaScript" type="text/JavaScript"> <!-- var url; url = document.referrer; if(url != 'http://xxxxxxxxx'/){ location.href('http://xxxxxxxxxxxxx'); } // --> </script>

  • モニタ解像度対応スクリプトにバグ?

    サイト訪問者のモニタ解像度を取得し、それに対応する専用ページにジャンプするスクリプトを探していたところ、 http://www-6.ibm.com/jp/developerworks/web/js_detect.html#matching というサイトに出会い、そこに解説されていた通りに <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="Adobe PageMill 3.0J Mac"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-sjis"> <TITLE>Untitled Document</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- Begin function redirectPage() { var url640x480 = "http://www.yoursite.com/640x480"; var url800x600 = "http://www.yoursite.com/800x600"; var url1024x768 = "http://www.yoursite.com/1024x768"; if ((screen.width == 640) (screen.height == 480)) window.location.href= url640x480; else if ((screen.width == 800) (screen.height == 600)) window.location.href= url800x600; else if ((screen.width == 1024) (screen.height == 768)) window.location.href= url1024x768; else window.location.href= url640x480; } // End --> </SCRIPT> </HEAD> <body onload="redirectPage()"> </BODY> </HTML> というページを作ってアップしてみたのですが、実際にアクセスしてみると「ライン:13 エラー:関数を指定して下さい」とエラーになり、作動してくれません。 どこをどう書き直せば作動するようになるのでしょうか? お解りの方がいらっしゃいましたらご教授いただけませんでしょうか?

  • location.hostを取得し、HTMLタグに

    javascript初心者です。 javascriptのlocation.hostを取得し、 HTMLのtableタグの中に入れたいですがソースの書き方がよくわかりません。 <ソース> ------------------------------------------------------------------------------ <script type="text/javascript"> <!-- var domain = location.host; //--> </script> …(省略) <td><a href="XXXX.co.jp" class="XXXX" data-url="■■■■■■/XXX/XXXX/XXXX" data-count="none" data-lang="ja"></a><script type="text/javascript" src="XXXXX"></script></td> ------------------------------------------------------------------------------ 上記の■■■■■■のところにvar domainの値を入れたいですが、 inputのhiddenタグを使うと””の中では文字列と認識されちゃうので、 ドメインだけきれいに入れる方法を知りたいです。 ご存知の方、どうかご指導よろしくお願いします。

  • 別ページのインラインフレームのアンカーに移動させる方法

    はじめまして、勉強になります。色々調べてやってみたのですがどうしてもうまく動作してくれません。 やりたい内容は、あるページから同一ドメイン内のあるページに飛ばした時にアンカー情報(#~)付きで渡して、渡したページ先のインラインフレーム内のアンカーに移動させたいのです。 下のソースでstr変数がうまく渡っていないのか、受け取り側のスクリプトがまずいのかが分かりません。(ちなみに途中で変数をモニターする方法があるのでしょうか?) 一応次のページのURLバーには?以降のアンカー情報付きで表示されてはいるのですが、その?以降のアンカー情報がインラインフレームのURLに渡っていないような状態です。 以下省略ソースです。 【送信元】 <SCRIPT Language="JavaScript"> <!-- html1 = "飛ばす先.htm"; function watasu(str){ location.href = html1 + "?"+ str; } //--> </SCRIPT> </head> <body ~ <img src="画像.jpg" onClick="watasu('#2')"> 【受信側 親ページ】 <script language="JavaScript" type="text/javascript"> <!-- url1 = "liveevent_test.htm"; function jump2(){ url2 = "読み込むインラインフレーム.html"; str = location.search.substr(1,location.search.length-1); top.インラインフレーム名.location.href = url2+str; //top.インラインフレーム名.location.hash = #アンカー; <--ちなみにこの一行を上の一行と差し替えたら動きました。ですがここは前ページからの変数渡しにしたいのです。 } // --> </SCRIPT> <body ~ onLoad="jump2()">~ <IFRAME SRC="読み込むページ.html" name="インラインフレーム名" >~</IFRAME> どなたかヒントでもいいのでお力添えください…もしかして根本的なやり方がまずいのでしょうか。 よろしくお願いいたします。

専門家に質問してみよう