#概要
HTMLにおける<meta>タグを使用した
リダイレクト機能をテストした際に
指定URLに飛ばずに四苦八苦し記録です。
#背景
基礎からのMySQLを進める途中、
まさにその基礎勉強に飽き飽きし、
PHPの学習に飛んだ時の話です。
phpの話に入ったばかりの課題が
表題の件でした。
(最初にやることじゃなくね…?)
#開発環境
MacOS Mojave
PHP 7.1.23
Apache 2.4.39
使用ブラウザ Safari
#内容
初期に書いたコードは以下の通りでした。
文法は「基礎からのMySQL」に基づいていますが、
ちょっとだけアレンジしています。
<?php
print "<head>";
print " <meta http-equiv='refresh' content=5; URL='http://www.softbank.jp/'>";
print "</head>";
print "<body>";
print "5秒後にソフトバンクのページへ移動します";
print "</body>";
?>
何とも言えないクソコードですね。
出力結果を見てみましょう。
5秒後にソフトバンクのページへ移動します
↓5秒後…
5秒後にソフトバンクのページへ移動します
ページは変わらず、永遠と5秒ずつ同じページを
更新し続けています。
書籍の説明では、5秒後に
指定したURL先にジャンプするはずなのですが…
#対処
ググりにググり、リダイレクト機能について調査
しましたが、ほとんどのサイトが上記の記述で
説明されていました。
ところが、ある一つのサイトだけ
違った記述方法でした。
その記述方法を用いて訂正したコードを
下記に示します。
<?php
print "<head>";
//シングルクオートの位置が違う
print " <meta http-equiv='refresh' content='5; URL=http://www.softbank.jp/'>";
print "</head>";
print "<body>";
print "5秒後にソフトバンクのページへ移動します";
print "</body>";
?>
訂正前はURLのみをシングルクオートで囲っていましたが
<meta http-equiv='refresh' content=5; URL='http://www.softbank.jp/'>
訂正後はcontentで指定する秒数の前からシングルクオートで
囲っています。
<meta http-equiv='refresh' content='5; URL=http://www.softbank.jp/'>
結果、出力は以下の通りになりました。
5秒後にソフトバンクのページへ移動します
↓5秒後…
(ソフトバンクホームページ)
成功しましたね。
#結局何が原因なの?
現時点で分かっていません。
教えてエロい人。
#参考書籍
基礎からのMySQL
参考サイト