ErrorDocument no .htaccess, é possível usar o caminho relativo?

5

Isso não funciona:

ErrorDocument 401 ../../src/wrong_pwd.php

processa o caminho como texto, realmente imprime

../../src/wrong_pwd.php

e não exibe o arquivo real.

Se eu colocar o caminho absoluto, ele renderizará o conteúdo de /var/www/home (eu realmente não sei porque, talvez seja algo no httpd.conf?)

Como posso fazer isso?

    
por Andrea Ambu 04.08.2009 / 19:33

2 respostas

2

Os docs dizem:

URLs can begin with a slash (/) for local web-paths (relative to the DocumentRoot), or be a full URL which the client can resolve. Alternatively, a message can be provided to be displayed by the browser.

../../src/wrong_pwd.php não começa com uma barra, então espero que o Apache a trate como uma mensagem. Parece que você não pode retornar um documento que está fora do DocumentRoot , então eu suspeito que o que você quer nunca funcionará (isso é sensato; afinal, o cliente tem que ser capaz de recuperar o documento em caso de erro) .

Você pode usar Alias para aliasar a página de erro a um local fora da raiz do documento. Algo como:

Alias /error/wrong_pwd.php /path/to/src/wrong_pwd.php
ErrorDocument 401 /error/wrong_pwd.php

Não testado, YMMV, etc. Talvez seja necessário conceder acesso explicitamente a esse diretório com um < Directory > quadra; consulte a documentação mod_alias . É claro que existem preocupações de segurança aqui - geralmente você não quer expor sua fonte ao mundo. (Se este for o caso, talvez você possa criar um wrapper PHP leve e visível para a web, que include()s the /path/to/src/wrong_pwd.php ...)

    
por 04.08.2009 / 23:21
0

Já experimentou um link simbólico?

ln -s ../../src/wrong_pwd.php src/wrong_pwd.php
    
por 20.10.2009 / 15:24