.htaccess 中的 ErrorDocument,是否可以使用相对路径?

And*_*mbu 5 .htaccess path errordocument apache-2.2

这不起作用:

ErrorDocument 401 ../../src/wrong_pwd.php
Run Code Online (Sandbox Code Playgroud)

它将路径呈现为文本,它确实打印

../../src/wrong_pwd.php
Run Code Online (Sandbox Code Playgroud)

并且不输出真实文件。

如果我放置绝对路径,它将呈现/var/www/home (我真的不知道为什么,也许是 httpd.conf 中的内容?)

我怎样才能做到这一点?

mar*_*ton 2

文档说

URL 可以以本地 Web 路径(相对于 DocumentRoot)的斜杠 (/) 开头,也可以是客户端可以解析的完整 URL。或者,可以提供一条消息以由浏览器显示。

../../src/wrong_pwd.php不以斜杠开头,所以我希望 Apache 将其视为一条消息。看起来您无法返回外部的文档,DocumentRoot所以我怀疑您想要的永远不会起作用(这是明智的;毕竟,客户端必须能够在发生错误时检索文档)。

您也许可以将Alias错误页面别名到文档根目录之外的位置。就像是:

Alias /error/wrong_pwd.php /path/to/src/wrong_pwd.php
ErrorDocument 401 /error/wrong_pwd.php
Run Code Online (Sandbox Code Playgroud)

未经测试,YMMV 等。您可能需要使用 < > 块显式授予对此目录的访问权限Directory;请参阅mod_alias文档。当然,这里存在安全问题——通常您不想将您的来源暴露给全世界。(如果是这种情况,也许您可​​以制作一个轻量级、网络可见的 PHP 包装器,include()s... /path/to/src/wrong_pwd.php