1

我已经在我的 ubuntu 机器上安装了 apache2。由于我需要使用子域,我在可用的站点中创建了一个正确的条目,如下所示:

<VirtualHost *:80>
ServerName xxx.localhost
DocumentRoot /var/www/
</VirtualHost>

我还启用了 mod_rewrite(并在我的站点可用/默认文件中更改了“AllowOverride All”),但除此之外没有其他任何更改。

我的 .htaccess 文件确实有效,我想处理一些错误代码。使用 404 这样做效果很好,但由于某种原因,其他错误似乎不起作用。我最感兴趣的是处理错误 400:

ErrorDocument   400 /400.php
ErrorDocument   404 /404.php

还有什么我应该看的吗?我似乎找不到任何允许 404 而其他错误代码不允许的地方。

4

2 回答 2

3

如果 php 返回 400 错误,则 php 应该生成错误文档。

使用类似的东西:

if( $someError )
{
  http_response_code(400);
  include("{$_SERVER['DOCUMENT_ROOT']}/400.php");
  exit();
}
于 2012-12-22T21:21:32.333 回答
1

Apache 文档

尽管可以覆盖大多数错误消息,但在某些情况下,无论 ErrorDocument 的设置如何,都会使用内部消息。特别是,如果检测到格式错误的请求,将立即停止正常的请求处理并返回内部错误消息。这对于防止由错误请求引起的安全问题是必要的。

尝试直接将其添加到httpd.conf并重新启动 Apache。

于 2012-12-01T01:55:50.410 回答