模拟403错误页面

时间:2011-02-21 02:16:19

标签: php header http-status-code-403

我知道您可以发送一个标题告诉浏览器此页面被禁止,如:

header('HTTP/1.0 403 Forbidden');

但是,如何才能显示在服务器上为此类错误创建的自定义错误页面?

默认情况下,只是发送标题会显示一个白页,但我记得有一段时间后你可以使用客户错误页面。有人知道吗?

12 个答案:

答案 0 :(得分:52)

发送标题后,只需回复您的内容。

header('HTTP/1.0 403 Forbidden');

echo 'You are forbidden!';

forbidden

答案 1 :(得分:26)

在PHP 5.4中引入了

http_response_code,使事情变得更加容易!

http_response_code(403);
die('Forbidden');

答案 2 :(得分:19)

更改标题后包含自定义错误页面。

答案 3 :(得分:17)

为此,您必须先对浏览器说用户收到错误403.为此您可以使用此代码:

header("HTTP/1.1 403 Forbidden" );

然后,脚本发送“错误,错误,错误,错误,错误.......”,所以你必须停止它。你可以使用

exit;

使用这两行,服务器发送错误并停止脚本。

不要忘记:模仿错误,但必须在.htaccess文件中设置

ErrorDocument 403 /error403.php

答案 4 :(得分:4)

看到很多答案,但正确的是根据php手册提供标题函数调用的完整选项

header('HTTP/1.0 403 Forbidden', true, 403);

如果您使用

进行调用
vendor/laravel/framework/src/Illuminate/Foundation/Auth

使用Apache或任何其他服务器配置的HTTP 403的正常行为。

答案 5 :(得分:3)

的.htaccess

ErrorDocument 403     /403.html

答案 6 :(得分:2)

我已经阅读了这里的所有答案,但没有一个是我的情况的完整答案(这个问题完全相同)所以这里是我如何收集建议答案的一些部分并提出确切的解决方案:

  1. 登陆服务器的真实403页面。 (转到服务器上的禁止URL,或转到您喜欢的任何403页面)
  2. 右键单击并选择“查看源”。选择所有来源并将其保存到您的域中的文件,例如:http://domain.com/403.html
  3. 现在转到你真正的禁止页面(或你的某些部分的禁止情况)示例:http://domain.com/members/this_is_forbidden.php
  4. 之前回复任何HTML输出或标题下面的代码! (即使是空格也会导致PHP发送HTML / TEXT HTTP标头,但它不起作用) 以下代码应为第一行

        <?php header('HTTP/1.0 403 Forbidden');
        $contents = file_get_contents('/home/your_account/public_html/domain.com/403.html', TRUE);
        exit($contents);
    
  5. 现在你有了确切的解决方案。我通过CPANEL最新访客进行了检查和验证,并将其注册为403事件。

答案 7 :(得分:1)

为了最大限度地减少服务器的职责,简化:

<强>的.htaccess

ErrorDocument 403 "Forbidden"

<强> PHP

header('HTTP/1.0 403 Forbidden');

die(); // or your message: die('Forbidden');

答案 8 :(得分:1)

使用ModRewrite:

RewriteRule ^403.html$ - [F]

只需确保您创建一个名为&#34; 403.html&#34;的空白文档。在您的www根目录中,或者您将收到404错误而不是403错误。

答案 9 :(得分:0)

我知道您的apache conf或.htaccess中已经定义了ErrorDocument的场景,并希望在通过php手动发送4xx状态代码时显示这些页面。

不幸的是,使用常见方法无法实现这一点,因为php会将标头直接发送到用户的浏览器(而不是Apache Web服务器),而ErrorDocument则是Apache生成的http状态的显示处理程序。

答案 10 :(得分:-2)

发送403:

后刷新页面
<?php 
header('HTTP/1.0 403 Forbidden');
?>
<html><head>
<meta http-equiv="refresh" content="0;URL=http://my.error.page">
</head><body></body></html>

答案 11 :(得分:-4)

Alex,您可以使用以下标题重定向到自定义页面:

header('Location: my403page.html');

并确保在您的403页面上包含原始标题代码:

header('HTTP/1.0 403 Forbidden');

或者,您可以创建标题并包含403页面,如下所示:

header('HTTP/1.0 403 Forbidden');
include('my403page.html');