仿效一个403错误页面

我知道你可以发送一个头,告诉浏览器这个页面是禁止的,如:

header('HTTP/1.0 403 Forbidden'); 

但是,我怎样才能显示在这种types的错误在服务器上创build的自定义错误页面?

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

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

只需在发送标题后回显您的内容。

 header('HTTP/1.0 403 Forbidden'); echo 'You are forbidden!'; 

被禁止

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

 header("HTTP/1.1 403 Forbidden" ); 

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

 exit; 

有了这两行,服务器发送一个错误,并停止脚本。

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

 ErrorDocument 403 /error403.php 

http_response_code是在PHP 5.4中引入的,使事情变得简单多了!

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

的.htaccess

 ErrorDocument 403 /403.html 

看到很多的答案,但正确的是按照PHP手册提供头函数调用的完整选项

 void header ( string $string [, bool $replace = true [, int $http_response_code ]] ) 

如果你调用

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

随后将使用Apache或任何其他服务器configuration的HTTP 403的正常行为。

为了尽量减less服务器的责任,使其简单:

的.htaccess

 ErrorDocument 403 "Forbidden" 

PHP

 header('HTTP/1.0 403 Forbidden'); die(); // or your message: die('Forbidden'); 

使用ModRewrite:

RewriteRule ^403.html$ - [F]

只要确保在你的www根目录下创build一个名为“403.html”的空白文件,或者你将得到一个404错误,而不是403。

我已经阅读了所有的答案,没有一个答案完全符合我的情况(在这个问题中是完全一样的),所以这里是我如何收集build议答案的一些部分,并提出确切的解决scheme:

  1. 登陆你的服务器的真实403页面。 (转到服务器上的禁止URL,或转到您喜欢的任何403页面)
  2. 右键点击并select“查看源代码”。 select所有的来源,并保存到您的域名文件,如: http : //domain.com/403.html
  3. 现在去你的真正的禁止页面(或在你的PHP的一些部分被禁止的情况下)的例子: http : //domain.com/members/this_is_forbidden.php
  4. 任何HTML输出或标题之前回显以下代码! (甚至一个空格将导致PHP发送HTML /文本HTTP标头,它将无法正常工作)下面的代码应该是你的第一行

      <?php header('HTTP/1.0 403 Forbidden'); $contents = file_get_contents('/home/your_account/public_html/domain.com/403.html', TRUE); exit($contents); 

现在你有确切的解决scheme。 我使用CPANEL最新的访问者进行了检查和validation,并将其注册为确切的403事件。

我知道你已经在你的apache conf或.htaccess中定义了ErrorDocument,并且想通过php手动发送一个4xx状态码来使这些页面出现。

不幸的是,这是不可能的常见的方法,因为php直接发送标头到用户的浏览器(而不是Apache Web服务器),而ErrorDocument是从Apache生成的http状态显示处理程序。

发送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> 

亚历克斯,你可以redirect到你的自定义页面使用像这样的标题:

 header('Location: my403page.html'); 

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

 header('HTTP/1.0 403 Forbidden'); 

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

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