加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 在不更改请求URL的情况下重定向到HTTP错误文档

发布时间:2020-12-13 16:49:03 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试从 PHP页面显示HTTP错误文档,但我希望原始URL保留在地址栏中以防止搜索引擎爬虫感到困惑并允许重新加载页面以防它是临时问题. 我在PHP中创建了一个重定向函数,它有点像这样: public static function Redirect($url,$code = '303 See Other') { he
我正在尝试从 PHP页面显示HTTP错误文档,但我希望原始URL保留在地址栏中以防止搜索引擎爬虫感到困惑并允许重新加载页面以防它是临时问题.

我在PHP中创建了一个重定向函数,它有点像这样:

public static function Redirect($url,$code = '303 See Other') {
    header('HTTP/1.1 ' . $code);
    header('Location: ' . $url);
    exit(0);
}

如果我想显示错误文档,例如403 Forbidden,我会执行以下操作:Redirection :: Redirect(‘/ errordocs / 403.php’,’403 Forbidden’);它会工作正常.

正如我所说,用户URL将更改为/errordocs/403.php,我想避免.

我尝试做的是删除标题(‘Location:’.$url);如果HTTP代码是4xx或5xx,则行.我希望这会触发Apache显示正确的文档,因为我将.htaccess设置为指向相关的错误页面(它可以正常工作).

我实际上得到的是标准的谷歌浏览器消息,当时东西中断而不是我漂亮的自定义错误文档.

快速达成共识,现在最好的方法是什么?让它回显页面而不是重定向?

解决方法

如果是4xx状态代码,您可以只显示错误html的内容.否则重定向:

public static function Redirect($url,$code = '303 See Other') {
    header('HTTP/1.1 ' . $code);
    if(strpos($code,'4') === FALSE) {
        header('Location: ' . $url);
    } else {
        include(get_error_page_file_name($code));
    }
    exit(0);

}

上面的示例将发送正确的HTTP状态代码,将显示错误页面的内容并使您的URL在地址中保持相同.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读