PHP
HTML
Mac
PHP7
macOSMojave

metaタグを用いたリダイレクト機能で躓いた件

#概要

HTMLにおける<meta>タグを使用した

リダイレクト機能をテストした際に

指定URLに飛ばずに四苦八苦し記録です。


背景

基礎からのMySQLを進める途中、

まさにその基礎勉強に飽き飽きし、

PHPの学習に飛んだ時の話です。

phpの話に入ったばかりの課題が

表題の件でした。

(最初にやることじゃなくね…?)


開発環境

MacOS Mojave

PHP 7.1.23

Apache 2.4.39

使用ブラウザ Safari


内容

初期に書いたコードは以下の通りでした。

文法は「基礎からのMySQL」に基づいていますが、

ちょっとだけアレンジしています。


test.php

<?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先にジャンプするはずなのですが…


対処

ググりにググり、リダイレクト機能について調査

しましたが、ほとんどのサイトが上記の記述で

説明されていました。

ところが、ある一つのサイトだけ

違った記述方法でした。

その記述方法を用いて訂正したコードを

下記に示します。


test.php

<?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

参考サイト