【问题标题】:Undefined index: REDIRECT_STATUS in php未定义的索引:php 中的 REDIRECT_STATUS
【发布时间】:2012-08-24 16:30:50
【问题描述】:

我已经成功创建了一个 .htaccess 文件,该文件可以正常工作,并将所有错误代码(400、403、404、405、408、500、502、504)重定向到一个常见的 error-page.php。 我正在使用 $_SERVER["REDIRECT_STATUS"];检测错误代码,但是当页面导航到错误时,应该发生,我收到 Undefined index: REDIRECT_STATUS 错误。我需要设置一些配置或其他变量吗? 提前致谢

【问题讨论】:

  • PHP 中没有这样的预定义变量。 php.net/manual/en/reserved.variables.server.php
  • 检查链接页面上的 cmets,您将看到 REDIRECT_STATUS 一个有效变量。
  • 我看到用户对某些 Web 服务器设置的评论将该值注入环境。它不是由 PHP 提供的,或者它会在那些提供的文档中。
  • 此状态设置不一致。我没有深入研究它,所以我无法告诉你规则何时设置或未设置。

标签: php .htaccess


【解决方案1】:

来自Apache manual

当重定向到本地 URL 时,额外的环境变量是 设置以便可以进一步自定义响应。他们没有被发送 到外部 URL。

因此,如果您的 ErrorDocument 指令使用 URL,$_SERVER["REDIRECT_STATUS"] 将不可用。

而不是这个:

ErrorDocument 404 http://example.com/error-page.php

这样做:

ErrorDocument 404 /error-page.php

我无法找到任何地方说明何时将其添加到 Apache,因此我不确定此功能需要什么版本。

【讨论】:

    【解决方案2】:

    我想这会有所帮助吗?它适用于我遇到的几乎所有未定义的索引错误。

    <?PHP
        error_reporting(E_ALL & ~E_NOTICE);
    ?>
    

    【讨论】:

    • @KenK ItayMoav Dan Grossman 哇,这是我收到的最多的回复,哇,我很兴奋,感谢所有贡献,我开始相信变量没有定义,但后来看到使用它的代码。所以如果你们发现更多,你知道我住在哪里:)
    【解决方案3】:

    您可以尝试使用类似...的东西

    ErrorDocument 404 /error-page.php?status=404
    ErrorDocument 500 /error-page.php?status=500
    

    然后使用 $_GET 从那里相应地处理错误页面。

    【讨论】:

    • 谢谢@Tynarus,我不想那样做。所以如果你们发现更多,你知道我住在哪里:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 2021-02-09
    相关资源
    最近更新 更多