我的.htaccess将所有请求重定向/word_here
到/page.php?name=word_here
。然后,PHP脚本检查请求的页面是否在其页面数组中。
如果没有,如何模拟错误404?我试过了,但是并没有导致我的404页面ErrorDocument
在.htaccess
出现时通过配置。
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
我是否认为重定向到错误404页面是错误的?
我的.htaccess将所有请求重定向/word_here
到/page.php?name=word_here
。然后,PHP脚本检查请求的页面是否在其页面数组中。
如果没有,如何模拟错误404?我试过了,但是并没有导致我的404页面ErrorDocument
在.htaccess
出现时通过配置。
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
我是否认为重定向到错误404页面是错误的?
Answers:
用于生成404页的最新答案(从PHP 5.4或更高版本开始)是使用http_response_code
:
<?php
http_response_code(404);
include('my_404.php'); // provide your own HTML for the error page
die();
die()
并非绝对必要,但是可以确保您不会继续正常执行。
您正在执行的操作将起作用,并且浏览器将收到404代码。它不会执行的是显示您可能期望的“未找到”页面,例如:
在此服务器上找不到请求的URL /test.php。
这是因为,当PHP返回404代码时(至少Apache不会),Web服务器不会发送该页面。PHP负责发送自己的所有输出。因此,如果您想要类似的页面,则必须自己发送HTML,例如:
<?php
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404);
include("notFound.php");
?>
您可以将Apache放置在httpd.conf中,以将同一页面用于其自己的404消息:
ErrorDocument 404 /notFound.php
试试这个:
<?php
header("HTTP/1.0 404 Not Found");
?>
通过.htaccess文件创建自定义错误页面
1. 404-找不到页面
RewriteEngine On
ErrorDocument 404 /404.html
2. 500-内部服务器错误
RewriteEngine On
ErrorDocument 500 /500.html
3. 403-禁止
RewriteEngine On
ErrorDocument 403 /403.html
4. 400-错误的请求
RewriteEngine On
ErrorDocument 400 /400.html
5. 401-需要授权
RewriteEngine On
ErrorDocument 401 /401.html
您还可以将所有错误重定向到单个页面。喜欢
RewriteEngine On
ErrorDocument 404 /404.html
ErrorDocument 500 /404.html
ErrorDocument 403 /404.html
ErrorDocument 400 /404.html
ErrorDocument 401 /401.html
在该行之后,立即尝试使用exit
或关闭响应die()
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
exit;
要么
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
die();
ErrorDocument
从PHP 发送与我指定的相同的404页面。
$reqpath = strtok("/".trim(substr($_SERVER["REQUEST_URI"], strlen(APP_ROOT)), "/"), "?");
在page.php文件中使用。因为存在一种情况,这些页面之一期望用户查询“名称”。
尝试一次。
$wp_query->set_404();
status_header(404);
get_template_part('404');