Apache редирект 404 только для файлов, которые не найдены? - PullRequest
2 голосов
/ 03 августа 2009

Что я хочу сделать, так это в основном пересылать все запросы в каталог, и, если файл существует, отправлять его. Если нет, отправьте его из родительского каталога (предположите, что он существует там). Файлы большие и их может быть много, и подкаталоги будут часто меняться, поэтому ссылки на файловые системы не являются отличным способом управления. Есть ли какой-нибудь Apache конфиг способ сделать это? например,

/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 мог перенаправить все запросы в одной папке в определенный php-файл, который проверяет, присутствует ли файл, а если нет, проверяет папку?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 03 августа 2009

Вы можете использовать mod_rewrite , чтобы сделать это:

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

Это правило перезапишет запрос /path/foo/bar до /path/bar только если /path/foo/bar не является обычным файлом.

0 голосов
/ 03 августа 2009

Да, PHP может перенаправить в родительский каталог.

...