Перенаправление Apache 404 только для файлов, которые не найдены?
-
11-07-2019 - |
Вопрос
То, что я хочу сделать, это в основном отправлять все запросы в каталог, и если файл существует, отправить его.Если нет, отправьте его из родительского каталога (предположим, что он там существует).Файлы большие, и их может быть много, а подкаталоги будут часто меняться, поэтому ссылки на файловую систему - не лучший способ управления.Есть ли какой-нибудь способ настройки 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-файл, который проверяет, присутствует ли файл, и если нет, проверяет 'up' папку?
Спасибо.
Решение
Вы могли бы использовать mod_rewrite мод_реврейтинг чтобы сделать это:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^path/[^/]+/([^/]+)$ path/$1 [L]
Это правило перепишет запрос /path/
foo
/
bar
Для /path/
bar
только если /path/
foo
/
bar
это не обычный файл.
Другие советы
Да, PHP может перенаправление в родительский каталог.