Apache: mapeando vários diretórios para o mesmo local

1

Eu gostaria de mapear vários diretórios para o mesmo local com o Apache, esperando um comportamento semelhante a este: suponha que o /static location deva ser suportado pelos diretórios /srv/static1 e /srv/static2 . Então, se /static/image.png for solicitado, eu gostaria que o Apache verifique os arquivos /srv/static1/image.png e /srv/static2/image.png , nessa ordem. Primeiro arquivo encontrado é retornado; se nenhum for encontrado, o erro 404 clássico será enviado de volta.

É claro que uma solução é usar um script para criar um diretório de links simbólicos que apontam para o local correto e usá-lo, por exemplo, em uma diretiva Alias . Eu me pergunto se existe um caminho mais direto que não me obrigue a implantar máquinas adicionais.

Obrigado!

    
por Giovanni Mascellani 22.03.2014 / 12:56

1 resposta

5

Isso é feito facilmente usando o mod_rewrite. Você pode configurá-lo para ter uma condição de que, se o arquivo não existir no primeiro diretório, ele deverá procurar no segundo, e assim por diante.

Aqui está uma breve configuração de amostra; Para mais informações, consulte a questão mod_rewrite canônica e documentação mod_rewrite do apache .

RewriteEngine on

# first try to find it in dir1/...
# ...and if found stop and be happy:
RewriteCond %{DOCUMENT_ROOT}/dir1/%{REQUEST_URI} -f
RewriteRule ^(.+) %{DOCUMENT_ROOT}/dir1/$1 [L]

# second try to find it in dir2/...
# ...and if found stop and be happy:
RewriteCond %{DOCUMENT_ROOT}/dir2/%{REQUEST_URI} -f
RewriteRule ^(.+) %{DOCUMENT_ROOT}/dir2/$1 [L]

# else go on for other Alias or ScriptAlias directives,
# etc.
RewriteRule ^ - [PT] 
    
por 22.03.2014 / 13:19