webページのリダイレクト
リダイレクトは ブラウザでページを勝手に別のページに飛ばされることです
アクセスしたページを見たいのに勝手に広告ページに飛ばされる
そんな経験ありませんか? ありませんよね
私もこれまではページURLが変わったときくらいにしかリダイレクトされることはなかったです
xxxx.jpからxxxx.comになる とかです
ですが 今回 携帯で見ていたページをパソコンで見ようとしたらアフィリエイトをクリックしたような広告ページに飛ばされてしまいました
HTMLは送られてきているようだったのでリダイレクトされないようにソースを開いて読んでましたが 携帯で読んでるよりページ取得は早くなりましたが 読みやすさが悪化しました
パソコンでアクセスされたくないのか知らないですが迷惑すぎですよね
アクセスしたページを見たいのに勝手に広告ページに飛ばされる
そんな経験ありませんか? ありませんよね
私もこれまではページURLが変わったときくらいにしかリダイレクトされることはなかったです
xxxx.jpからxxxx.comになる とかです
ですが 今回 携帯で見ていたページをパソコンで見ようとしたらアフィリエイトをクリックしたような広告ページに飛ばされてしまいました
HTMLは送られてきているようだったのでリダイレクトされないようにソースを開いて読んでましたが 携帯で読んでるよりページ取得は早くなりましたが 読みやすさが悪化しました
パソコンでアクセスされたくないのか知らないですが迷惑すぎですよね
そのときのリダイレクト方法が初めて見る方法だったので今回はリダイレクトのお話です
「ページよこせー」 っていうサーバ側へのリクエストに対して 「ほらよ」とHTMLをもらえるときがあれば 「ないよ」と404 FILE NOT FOUND なんてのが返ってくることや 「今無理」と50xなエラーが返ってくるときもあります
その中の「ページこっちに変わったから」と3xxでページの移動先だけを教えてくれるものがあります
これがサーバ側リダイレクトですね
PHPだとheader関数を使って
これだとHTMLはもらえてないのでもらえないしリダイレクトを拒否できません
HTMLはもらえるけど もらったHTMLを読んだ結果リダイレクトするリダイレクトです
今のページを表すlocation変数を書き換えればリダイレクトできます
他にもwindow.openが使えます
2つ目の引数でウィンドウ名を指定できるので自分自身を設定すれば自身のタブのページを移動してリダイレクトにできます
この方法はJavaScriptなのでリダイレクトしたくなければJavaScriptをオフにすればいいです
これが今回初めて見た方法です
metaタグのrefresh属性を使います
さすがHTML5こんな機能まであるのか~ と思ったのですが昔からある機能でかなり前から非推奨らしいです
でも一応廃止にはなってないようです
調べてみたのですが Chromeにはこのリダイレクトを止める設定はないそうです
HTMLタグならJavaScriptで消せばリダイレクトは防げるんじゃないの と思いましたが そうはいきませんでした
DOM構築が終わった時点でリダイレクトが確定しているようでChrome拡張機能のJavaScript埋め込みでmetaタグを削除したんですがリダイレクトしてしまいました
レスポンスが返ってきてから DOMを作るまでにレスポンスとして受け取ったHTMLを書き換えられれば可能だと思うんですがChromeのAPIのページを見ていてもそれらしいことができるものが見当たりません
拡張機能を作る上では レスポンスを書き換えられれば色々とできて便利になると思うのに残念です
サーバ側
どれもサーバ側といえばサーバ側でリダイレクトしてよ って命令を出してるんですがHTMLを送らない方法ということでサーバ側です「ページよこせー」 っていうサーバ側へのリクエストに対して 「ほらよ」とHTMLをもらえるときがあれば 「ないよ」と404 FILE NOT FOUND なんてのが返ってくることや 「今無理」と50xなエラーが返ってくるときもあります
その中の「ページこっちに変わったから」と3xxでページの移動先だけを教えてくれるものがあります
これがサーバ側リダイレクトですね
PHPだとheader関数を使って
header("Location:http://xxx.com/xxxx/xxxx.html");
とか書いておけばできたと思いますこれだとHTMLはもらえてないのでもらえないしリダイレクトを拒否できません
クライアント側
次がクライアント側HTMLはもらえるけど もらったHTMLを読んだ結果リダイレクトするリダイレクトです
JavaScript
JavaScriptにリダイレクトが書かれています今のページを表すlocation変数を書き換えればリダイレクトできます
location.href = "http://xxx.jp/xxxx/xxxx.html"
他にもwindow.openが使えます
window.open("http://xxx.net/xxxx.xxxx.html", "xxxx")
これで 新しいウィンドウまたはタブでURLを開きます2つ目の引数でウィンドウ名を指定できるので自分自身を設定すれば自身のタブのページを移動してリダイレクトにできます
この方法はJavaScriptなのでリダイレクトしたくなければJavaScriptをオフにすればいいです
HTMLタグ
HTMLタグにもそういう機能をもったものがありますこれが今回初めて見た方法です
metaタグのrefresh属性を使います
<meta http-equiv="refresh" content="5;URL=http://xxx.org/xxxx/xxxx.html">
5と書いているところがリダイレクトまでの秒数で 0にすれば開いてすぐにリダイレクトしますさすがHTML5こんな機能まであるのか~ と思ったのですが昔からある機能でかなり前から非推奨らしいです
でも一応廃止にはなってないようです
調べてみたのですが Chromeにはこのリダイレクトを止める設定はないそうです
HTMLタグならJavaScriptで消せばリダイレクトは防げるんじゃないの と思いましたが そうはいきませんでした
DOM構築が終わった時点でリダイレクトが確定しているようでChrome拡張機能のJavaScript埋め込みでmetaタグを削除したんですがリダイレクトしてしまいました
レスポンスが返ってきてから DOMを作るまでにレスポンスとして受け取ったHTMLを書き換えられれば可能だと思うんですがChromeのAPIのページを見ていてもそれらしいことができるものが見当たりません
拡張機能を作る上では レスポンスを書き換えられれば色々とできて便利になると思うのに残念です