【问题标题】:Creating visible redirect?创建可见重定向?
【发布时间】:2009-10-01 08:53:42
【问题描述】:

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

如何重定向您被重定向的显示(如旧版 Gmail 和 LinkedIn)。每当我尝试这样做时,都会收到错误消息,提示标头已发送。

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

【问题讨论】:

  • 我不知道该接受哪个答案,因为 igor 和 anax 的答案相同。所以我拿起了igor的因为他早些时候回答了。谢谢大家!

标签: php apache redirect


【解决方案1】:

您想使用元重定向。它们使您能够显示一个页面,几秒钟后,该页面会将您发送到新页面。您所要做的就是在“一些不错的”重定向页面的部分添加一个标签。

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

你想做这样的事情:

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

were 2 是显示页面的秒数,whereto 是您希望将用户发送到的位置

【讨论】:

  • 所有 http-equiv 元标记都有一个等效的 HTTP 标头(顾名思义)。所以一个更好的解决方案,你可以从 PHP 中看到,设置一个 'Refresh: 2;url=example.com' 标题,而不是污染你的标记
【解决方案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

【讨论】:

    【解决方案3】:

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

    我个人觉得这两种方法对用户和搜索引擎都不是很好。使用也表示为什么存在重定向(永久移动、临时等)的 HTTP 标头更好恕我直言。

    【讨论】:

    • ya javascript 就在那里,更像是模仿某种重定向的新 Gmail。但是请详细解释一下这两种方法:)
    【解决方案4】:

    如果您已经发送了标头,那么这意味着您正在尝试使用 PHP header() 重定向进行重定向,并且在调用 header() 函数之前您已经在屏幕上显示了输出,一种解决方案是使用 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() 在输出缓冲时可能无法正常工作

    【讨论】:

    • 这不可能。首先,重定向需要是header('Location: http://domain.com');,但除此之外,它是一个 HTTP 标头。这意味着重定向到另一个页面的指令出现在响应正文之前,因此没有任何内容可见。无论您是否在服务器端执行sleep。这根本不是 HTTP 的工作方式 :-)
    猜你喜欢
    • 2015-09-18
    • 2011-10-05
    • 2023-03-18
    • 2011-04-10
    • 2012-11-18
    • 2021-02-10
    • 2016-10-10
    • 2020-12-24
    • 1970-01-01
    相关资源
    最近更新 更多