Apache redirecionar 404 para apenas os arquivos que não são encontrados?
-
11-07-2019 - |
Pergunta
O que eu estou procurando fazer é, basicamente, ter todos os pedidos para um diretório, e se existe o arquivo, enviá-lo. Se não, enviá-lo do diretório pai (assumir que existe lá). Os arquivos são grandes e não pode haver um lote, e os subdiretórios vai mudar com freqüência, para ligações do sistema de arquivos não é uma ótima maneira de gerenciar. Existe alguma maneira de configuração do Apache de fazer isso? por exemplo.
/path/file0
/path/file1
/path/sub1/fileA
/path/sub1/fileB
/path/sub1/fileC
/path/sub2/fileA
/path/sub2/fileB
/path/sub2/fileC
Assim, se um pedido chega para /path/sub1/fileB
eles ficam /path/sub1/fileB
(caso normal). Se uma solicitação chega para /path/sub1/file0
eles ficam /path/file0
(especial-caso).
Ou talvez haja uma maneira em PHP, se eu pudesse ter Apache redirecionar todas as solicitações em uma pasta para um arquivo php específico que verifica se o arquivo está presente e se não cheques de up 'uma pasta?
Graças.
Solução
Você pode usar mod_rewrite para fazer isso:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^path/[^/]+/([^/]+)$ path/$1 [L]
Essa regra irá reescrever um pedido de /path/
foo
/
bar
para /path/
bar
somente se /path/
foo
/
bar
não é um arquivo regular.
Outras dicas
Sim, PHP pode redirecionamento para um diretório pai.