这不起作用:
ErrorDocument 401 ../../src/wrong_pwd.php
它将path呈现为文本,它真的打印
../../src/wrong_pwd.php
并不输出真实文件。
如果我把绝对path,它会呈现/var/www/home (我不知道为什么,也许这是在httpd.conf中的东西?)
我怎样才能做到这一点?
文档说:
URL可以以本地Webpath的斜线(/)开头(相对于DocumentRoot),也可以是客户端可以parsing的完整URL。 或者,可以提供消息以由浏览器显示。
../../src/wrong_pwd.php不以斜线开头,所以我期望Apache将它视为一条消息。 看起来你不能返回DocumentRoot之外的DocumentRoot所以我怀疑你想要什么都不会工作(这是明智的;毕竟,客户端必须能够在发生错误时检索文档)。
您可能可以使用别名将错误页面Alias到文档根目录之外的位置。 就像是:
Alias /error/wrong_pwd.php /path/to/src/wrong_pwd.php ErrorDocument 401 /error/wrong_pwd.php
未经testing,YMMV等。您可能需要使用< Directory >块明确授予对此目录的访问权限; 请参阅mod_alias文档。 当然,这里有安全方面的问题 – 通常你不想把你的源头暴露给世界。 (如果是这种情况,也许你可以做一个轻量级的,网页上可见的PHP包装,其中include()s /path/to/src/wrong_pwd.php到/path/to/src/wrong_pwd.php …)
你尝试过一个符号链接?
ln -s ../../src/wrong_pwd.php src/wrong_pwd.php