【发布时间】:2014-09-24 20:43:30
【问题描述】:
我在某处读到,不推荐使用 META 刷新进行重定向。
据我所知,PHP 中的header( "refresh:0;url=$url" );,
和<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:标头提供)。跨度> -
嘿@rockyraw!很高兴看到您再次发布几乎相同的问题。
-
@JayBlanchard 我不敢苟同,这是一个相似的代码,但不是完全相同的问题
-
我说“几乎”。 ¯_(ツ)_/¯
标签: php