web-dev-qa-db-ja.com

.htaccessのErrorDocument、相対パスを使用することは可能ですか?

これは機能しません:

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

パスをテキストとしてレンダリングし、実際に印刷します

../../src/wrong_pwd.php

実際のファイルは出力されません。

絶対パスを入力すると、/var/www/homeの内容がレンダリングされます(理由はわかりませんが、httpd.confにあるのでしょうか?)

どうやってやるの?

5
Andrea Ambu

docs 言う:

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
_

未テスト、YMMVなど。<Directory>ブロックを使用してこのディレクトリへのアクセスを明示的に許可する必要がある場合があります。 mod_alias のドキュメントを参照してください。もちろん、ここにはセキュリティ上の懸念があります。一般的に、ソースを世界に公開したくないでしょう。 (これが事実である場合、おそらくあなたは軽量でウェブに見えるPHPラッパーをinclude()s _/path/to/src/wrong_pwd.php_...)にすることができます)

2
markdrayton

シンボリックリンクを試しましたか?

ln -s ../../src/wrong_pwd.php src/wrong_pwd.php
0
Singletoned