我讀過一些使用META刷新重定向的地方,這不是一個推薦的做法。有沒有很好的做法用PHP重定向,允許顯示<BODY>內容?
據我瞭解header("refresh:0;url=$url");
在PHP中, 和<meta http-equiv="refresh" content="0;url=$url/" />
在HTML META標記, 都被認爲是一個META刷新這將返回這個頭:
HTTP/1.x 200 OK
...
Refresh: 0;url=$url
假設我不想使用JS重定向,是否可以使用其他建議的練習重定向,例如301或302,同時仍在重定向頁面中運行以下元素,例如以下消息和某個腳本?
<?php
$url = "could-not-get-a-foo-parameter-at-all-error-monitoring-page.html";
if(isset($_POST['foo'])){
switch ($_POST['foo']) {
case "a":
$url = "http://www.aaa.com/";
break;
case "b":
$url = "http://www.bbb.com/";
break;
default:
$url = "foo-parameter-exists-but-is-wrong-error-monitoring-page.html";
break;
}
}
header("refresh:0;url=$url");
?>
<!doctype html>
<html>
<head>
<style>
.message {
color:blue;
}
</style>
</head>
<body>
<div class="message">Redirecting, Please hold on...</div>
<script>
something
</script>
不,沒有理由在發出HTTP 3xx重定向時顯示正文內容,因爲用戶代理(瀏覽器)會立即請求下一個資源(由Location:標題給出)。 – Dai 2014-09-24 20:46:14
嘿@rockyraw!很高興再次發佈幾乎相同的問題。 – 2014-09-24 20:56:50
@JayBlanchard我懇求不同,它是一個類似的代碼,但不是真正相同的問題 – rockyraw 2014-09-24 21:08:39