Это не работает:
ErrorDocument 401 ../../src/wrong_pwd.php
он отображает путь как текст, он действительно печатает
../../src/wrong_pwd.php
и не выводит реальный файл.
Если я поставлю абсолютный путь, он отобразит содержимое /var/www/home
(Не знаю почему, может, это что-то в httpd.conf?)
Как я могу это сделать?
В документы сказать:
URL-адреса могут начинаться с косой черты (/) для локальных веб-путей (относительно 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
Непроверено, YMMV и т. Д. Возможно, вам потребуется явно предоставить доступ к этому каталогу с помощью <Directory
> блок; увидеть mod_alias документация. Конечно, здесь есть проблемы с безопасностью - обычно вы не хотите раскрывать свой источник миру. (Если это так, возможно, вы могли бы сделать легкую, видимую в Интернете оболочку PHP, которая include()s
в /path/to/src/wrong_pwd.php
...)
Вы пробовали символическую ссылку?
ln -s ../../src/wrong_pwd.php src/wrong_pwd.php