4

特定のフォルダーに不足しているファイルのリクエストを受け取り、そのフォルダーのprogram.phpにリダイレクトしたいと考えています。

これは、さまざまな場所で頻繁に使用するプログラムであり、htaccess ファイルでフォルダーの名前を指定することは避けたいと考えています。

私はちょうど入れてみました:

errordocument 404 program.php

しかし、その結果、ブラウザは「program.php」を出力するだけで、program.phpを実行しません。

http://httpd.apache.org/docs/2.0/mod/core.htmlのドキュメントに基づいて、スラッシュまたは http で始まらない URL はテキスト メッセージとして解釈されます

問題は、この制限を回避して同じフォルダーにアクセスできるようにする方法です。

4

6 に答える 6

3

errordocument の代わりに rewriteruleを使用することになりました:

書き換えエンジンオン
rewritecond %{request_filename} !-f
rewriterule ^(.+).jpg$ program.php?i=$1.jpg [L]

2 行目は、既存の画像が正しく表示されるように、ファイルが存在しないことを確認します。

于 2009-11-03T18:10:34.253 に答える
2

あなたがしたい:

ErrorDocument 404 /program.php

docsによると、「URL はローカル Web パス (DocumentRoot からの相対パス) のスラッシュ (/) で始めることができます。」

于 2009-11-03T17:34:05.443 に答える
0

1 つの ErrorDocument ですべてのフォルダー内のすべてのエラーを処理しないのはなぜですか? その方がすっきりするかもしれません。その後、 $_SERVER["REQUEST_URI"] を使用して個々のケースを処理できます。私の記憶が正しければ、元のリクエストが含まれているはずです。

于 2009-11-03T18:45:25.410 に答える
0

これはどう。ルート パスで、一般的な error.php ファイルを設定します。ただし、REQUEST_URI を解析し、パスを確認し、そこにカスタムの error.php があるかどうかを確認し、それを含めるだけです。うまくいきますか?

于 2009-11-03T20:54:40.530 に答える
0

フォルダーの数が少ない場合は、おそらく次のものを使用できます。

<Directory /path/a>
   ErrorDocument 404 /a/program.php
</Directory>
<Directory /path/b>
   ErrorDocument 404 /b/program.php
</Directory> 
<Directory /path/c>
   ErrorDocument 404 /c/program.php
</Directory>

それが現実的でない場合は、ルートに program.php を 1 つだけ配置し、REDIRECT_URL 環境変数 (php では $_SERVER['REDIRECT_URL']) の内容に応じて応答を変える必要があります。

于 2009-11-03T18:02:12.180 に答える
0

(相対または絶対) パスを試しましたか? 相対にする場合は、Web ルートにする必要があります。これにより、目的が果たされる可能性があります。

ErrorDocument 404 /program.php
于 2009-11-03T17:33:32.597 に答える