创建可见重定向?

时间:2009-10-01 08:53:43

标签: php apache redirect

请原谅,如果这个问题听起来很愚蠢,但这是一个我想知道的问题。 :)

如何重定向显示您正在重定向的显示内容(如旧版Gmail和LinkedIn)。每当我尝试这样做时,我都会收到错误,说Headers已经被发送了。

然后有人告诉我在重定向之前我不应该输出任何标记(比如facebook登录)。那么我如何去做并在重定向期间显示一些不错的东西?

4 个答案:

答案 0 :(得分:3)

您想要使用元重定向。它们使您能够显示页面,几秒钟后,此页面将向您发送新页面。您所要做的就是在“好东西”重定向页面的部分添加标签。

这是关于元重定向的快速教程: http://webdesign.about.com/od/metataglibraries/a/aa080300a.htm

你想做这样的事情:

<html>
  <head>
    <meta http-equiv="refresh" content="2;url=whereto">

2 是显示页面的秒数,到哪里是您要向用户发送的位置

答案 1 :(得分:2)

您需要输出您的页面,其中包含以下META关键字:

<html>
  <head>
    <!-- redirection to example.com in 5 seconds -->
    <meta http-equiv="refresh" content="5;url=http://example.com/" />
    ...
  </head>
  <body>
  ...

阅读以下文章以获取更多帮助:http://en.wikipedia.org/wiki/Meta_refresh

答案 2 :(得分:1)

这些重定向不是通过“普通”重定向HTTP标头完成的。相反,他们会显示一个页面,并使用META Refresh或某些Javascript导航到新页面。

我个人认为这两种方法对用户和搜索引擎都不是很好。使用HTTP标头也表示为什么有重定向(永久移动,临时,&amp; c。)是更好的imho。

答案 3 :(得分:0)

如果你收到已经发送的标题,那么这意味着你正在尝试使用PHP header()重定向重定向,并且在调用header()函数之前在屏幕上输出,1解决方案就是使用PHP的输出缓冲,然后允许您在页面上的任何位置调用header()重定向,而不会得到该错误。

要显示一条消息,您可以使用其他答案中提到的元方法,甚至可以使用它进行javascript重定向,只是为了安全,但我会这样做的方式如下所示

<?PHP
ob_start();

//show a message
echo 'You will be redirected in 10 seconds';  

//amount of time to show the message above before redirecting
sleep(200);

//redirect
header('http://domain.com');
?>

我没有测试过这个但是你应该明白这个想法,实际上现在我想一想,sleep()可能无法按预期正确使用输出缓冲