使用 ErrorDocument 指令

使用 ErrorDocument 指令

我有一个网站,它有三个不同的目录。我想为每个不同的目录创建一个自定义错误页面。我所做的如下:

<Directory "directory1">
    ErrorDocument 404 /directory1/error.php
</Directory>

<Directory "directory2">
    ErrorDocument 404 /directory2/error.php
</Directory>

<Directory "directory3">
    ErrorDocument 404 /directory3/error.php
</Directory>

现在,当我在根级 htaccess 中使用此代码时,我得到的结果是内部服务器。需要帮助来解决问题。

答案1

<directory>指示不能使用在 htaccess 文件中。

相反,你可以:

  • 在每个子文件夹中创建一个 htaccess 文件,只需使用ErrorDocument指令

  • 编写一些复杂的 mod_rewrite 规则

  • 让 PHP 完成这项工作。

    /.htaccess

    ErrorDocument 404 /errors.php
    

    /errors.php

    <?php
    $error_include = sprintf('%s/%s/error.php', __DIR__,
        explode('/', pathinfo($_SERVER['REQUEST_URI'], PATHINFO_DIRNAME))[1]);
    
    if (@file_exists($error_include)) {
        include($error_include);
    } else {
        echo 'Not Found: and no error document!';
    }
    

相关内容