SuPHP:Apache 中的 PHP 403 ErrorDocument 不起作用

SuPHP:Apache 中的 PHP 403 ErrorDocument 不起作用

我正在尝试使用 PHP 文件在 Apache 中设置 403 错误文档,如下所示(通过 .htaccess):

order deny,allow
deny from all
allow from [MY_IP]
ErrorDocument 403 /err403.php

但它不起作用,它显示 apache 默认 403 错误,但如果我使用 .html 错误文档,它就会起作用,如下所示:

order deny,allow
deny from all
allow from [MY_IP]
ErrorDocument 403 /err403.html

然后它显示带有错误页面的定制的 HTML 文档。我正在使用 SuPHP。以及 Ubuntu 14.04 Server 存储库中的 apache 和 php。

如果我从.htaccess中删除此限制,则文件err403.php就可以正常读取。

有什么想法吗?谢谢!!

编辑:即,将允许从 ip 更改为另一个 ip,以便触发错误。

答案1

您需要将 err403.php 放在用户(或在您的情况下为 IP)有权访问的目录中。

否则 apache 无法提供该页面并默认返回标准 403 错误页面。

还要确保(当您使用带有 apache 2.4 的 ubuntu 14.04 时)使用“require”更改访问配置。 order、allow、denied 指令已弃用。

完整示例:

ErrorDocument 403 /path/accessible/to/all/err403.php

<Directory /path/your/website/>
    Require ip [your_ip]
</Directory>

答案2

除了通过 rechengehirn 回复之外,还可以将文件放在自己的受限文件夹中,只允许错误文件。

order deny,allow
deny from all
allow from [MY_IP]

<Files "err403.php">
    allow from all
</Files>

ErrorDocument   403     /err403.php

答案3

我今天为此挣扎了很长时间,直到我使用了 FQDN 才奏效:

    <VirtualHost *:80>
        ServerName myServer.rad.awesome.com
        ServerAlias myServer.rad
        Alias /static/ /my/Doc/Root
        <Directory /my/Doc/Root/static>
            Options All
            AllowOverride All
            ErrorDocument 403 "http://myServer.rad.awesome.com/youNoEnter.html"
            order deny,allow
            Deny from all
            allow from (MY IP)
            satisfy any
        </Directory>
     </VirtualHost>

只需将您的 ErrorDocument 放在绝对 URL 中就可以了。

相关内容