Eri*_*ric 96 php redirect http-status-code-404
我的.htaccess将所有请求重定向/word_here到/page.php?name=word_here.然后,PHP脚本检查所请求的页面是否在其页面数组中.
如果没有,我该如何模拟错误404?我尝试了这个,但它没有导致我的404页面ErrorDocument在.htaccess显示中配置.
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
Run Code Online (Sandbox Code Playgroud)
我是否正确地认为重定向到我的错误404页面是错误的?
bla*_*ade 127
用于生成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();
Run Code Online (Sandbox Code Playgroud)
die() 并非绝对必要,但它确保您不会继续正常执行.
JW.*_*JW. 85
您正在做的事情将起作用,浏览器将收到404代码.它不会做的是显示您可能期望的"未找到"页面,例如:
在此服务器上找不到请求的URL /test.php.
那是因为当PHP返回404代码时,Web服务器不会发送该页面(至少Apache没有).PHP负责发送自己的所有输出.因此,如果您想要一个类似的页面,您必须自己发送HTML,例如:
<?php
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404);
include("notFound.php");
?>
Run Code Online (Sandbox Code Playgroud)
您可以将Apache配置为使用相同的页面来处理自己的404消息,方法是将其放在httpd.conf中:
ErrorDocument 404 /notFound.php
Run Code Online (Sandbox Code Playgroud)
Ate*_*ral 22
试试这个:
<?php
header("HTTP/1.0 404 Not Found");
?>
Run Code Online (Sandbox Code Playgroud)
Irs*_*han 10
通过.htaccess文件创建自定义错误页面
1. 404 - 找不到页面
RewriteEngine On
ErrorDocument 404 /404.html
Run Code Online (Sandbox Code Playgroud)
2. 500 - 内部服务器错误
RewriteEngine On
ErrorDocument 500 /500.html
Run Code Online (Sandbox Code Playgroud)
3. 403 - 禁止
RewriteEngine On
ErrorDocument 403 /403.html
Run Code Online (Sandbox Code Playgroud)
4. 400 - 不良请求
RewriteEngine On
ErrorDocument 400 /400.html
Run Code Online (Sandbox Code Playgroud)
5. 401 - 需要授权
RewriteEngine On
ErrorDocument 401 /401.html
Run Code Online (Sandbox Code Playgroud)
您还可以将所有错误重定向到单个页面.喜欢
RewriteEngine On
ErrorDocument 404 /404.html
ErrorDocument 500 /404.html
ErrorDocument 403 /404.html
ErrorDocument 400 /404.html
ErrorDocument 401 /401.html
Run Code Online (Sandbox Code Playgroud)
你还记得发送 header 后要 die() 吗?404 标头不会自动停止处理,因此如果发生进一步处理,它可能看起来没有执行任何操作。
重定向到 404 页面并不好,但您可以毫无问题地包含其中的内容。这样,您就有了一个可以从正确的 URL 正确发送 404 状态的页面,但它也有您的“您在寻找什么?” 人类读者的页面。