gpt4 book ai didi

php - 如何将错误的查询字符串重定向到自定义错误页面+ 404 状态

转载 作者:可可西里 更新时间:2023-11-01 00:48:44 25 4
gpt4 key购买 nike

我想将在 URL 中使用错误查询字符串的用户重定向到自定义错误页面,同时还通过 .htaccess 指令提供 404 状态

ErrorDocument 404 http://www.domain.com/404.php

EDIT: this does not give 404 but 302!!! The "http://www.domain.com" causes a redirect. Just the local path gives a 404. See also http://httpd.apache.org/docs/2.0/mod/core.html#errordocument

因此,我在接收请求的 index.php 中创建了一个脚本,用于确定查询字符串是否无效,如果是,则给出以下命令:

header("HTTP/1.0 404 Not Found");

但是这不会通过 .htaccess 指令 ErrorDocument 重定向,而只是向访问者提供 404 状态。

当使用 header("Location: 404.php") 时你会得到一个 302 状态,当使用 header("Location: 404.php", true, 404) 状态为 404,但未转到自定义 404.php 页面。

现在我用

header ("Location: ", true, 404); 
echo "The URL you use doesn't lead to an existing page, etc.";

但这不是最初的计划......我如何让在 URL 中使用错误查询字符串的用户重定向到自定义错误页面,同时通过 .htaccess 指令 ErrorDocument 给出 404 状态,或者这是不可能的?

最佳答案

据我所知,从 PHP 显示 404 页面的唯一方法是显式重定向到它。原因是 Apache(或您正在使用的任何 Web 服务器)已经成功找到了将客户端(正在执行的 PHP 脚本)定向到的资源。如果 PHP 脚本无法解析客户端的请求,则它必须处理 404 header 的发送并显示页面本身。

你可以重定向

header ("HTTP/1.0 404 Not Found");
header ('Location: http://' . $_SERVER["SERVER_NAME"] . '/404.php');

或者您可以将 404 页面包含到要触发 404 的 PHP 脚本中。

header ("HTTP/1.0 404 Not Found");
include ('/path/to/404.php');

编辑:如果您使用第一种技术(重定向)并希望将 $_GET 传递给脚本以便它可以确定它有什么问题,您可以这样做。

header ("HTTP/1.0 404 Not Found");
header ('Location: http://' . $_SERVER["SERVER_NAME"] . '/404.php?' . http_build_query ($_GET));

如果您包含 404.php 文件,那么 $_GET 将对它可用

关于php - 如何将错误的查询字符串重定向到自定义错误页面+ 404 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11946843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com