2009-08-03 1 views
2

私が探しているのは基本的にすべての要求をディレクトリに持ち込み、ファイルが存在する場合はそれを送ります。そうでなければ、それを親ディレクトリから送ります(そこに存在すると仮定します)。ファイルが大きく、たくさんある可能性があります。サブディレクトリは頻繁に変更されるため、ファイルシステムのリンクは管理には適していません。これを行ういくつかのApacheの設定方法はありますか?例えばだから、Apacheリダイレクト404は見つからないファイルのみに対応していますか?

/path/file0 
/path/file1 
/path/sub1/fileA 
/path/sub1/fileB 
/path/sub1/fileC 
/path/sub2/fileA 
/path/sub2/fileB 
/path/sub2/fileC 

要求が/path/sub1/fileBのために来る場合、彼らは/path/sub1/fileB(通常の場合)を取得します。 /path/sub1/file0のリクエストがあった場合は、/path/file0(特殊なケース)となります。

もしかすると、もしあるファイルが存在するかどうかをチェックしていないなら、フォルダをチェックする特定のPHPファイルに、あるフォルダ内のすべてのリクエストをApacheがリダイレクトするようにする方法がありますか?

ありがとうございました。

+0

Apacheを知っている人は、タイトルを修正して意味が分かりますか? 404!=リダイレクト。 –

+0

正解、404が "見つからない" ... "見つからない"場合、別の場所からファイルを送信したい。 –

答えて

3

あなたはそれを行うためにmod_rewriteを使用することができます。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^path/[^/]+/([^/]+)$ path/$1 [L] 

このルールだけ/path/foo/場合/path/bar/path/foo/barの要求を書き換えますは通常のファイルではありません。

+0

ありがとう、これはどちらかになるか、または近いです。これにより、その場所に移動した302が送信されますか、または現在のパスにあるかのようにその場所からファイルを実際に送信しますか?私の好みは、後者の動作です...私はそれを試してみる... –

+0

これは、内部リダイレクトが発生します。したがって、クライアントは、ファイルが実際に存在するかどうかには何の違いも気付かないでしょう。 – Gumbo

0

はい、PHPは親ディレクトリにredirectできます。

+0

これはうまくいくかもしれませんが、どういうわけか私はPHPのファイルにすべてのリクエストを送信するためのapacheを得ることができたら、ファイルが存在するかどうかを確認することができます。 ...または別の場所からファイルを送信する方が良い。だから私はちょうど1つのPHPファイルにすべてを書き換えるために上記のガンボのルールを使用することができると思います... –

関連する問題