Назад | Перейти на главную страницу

ErrorDocument в .htaccess, можно ли использовать относительный путь?

Это не работает:

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