Servindo vários diretórios fora da raiz da Web a partir da mesma URL com o Apache2

1

É possível configurar o Apache para servir vários diretórios a partir do mesmo URL?

Por exemplo, dado que tenho imagens em dois locais: / mnt / imagestore1, / mnt / imagestore2. Eu gostaria que mysite.com/images/file.jpg exibisse imagens de qualquer diretório.

Parece não funcionar com os Aliases da seguinte forma:

Alias /images /mnt/imagestore1
Alias /images /mnt/imagestore2

E usar o mod_rewrite com um .htaccess na raiz do documento também não funcionou, embora meu entendimento sobre mod_rewrite possa estar aqui:

RewriteCond /mnt/imagestore1/%{REQUEST_URI} -f
RewriteRule ^(.+) /mnt/imagestore1/$1 [L]
RewriteCond /mnt/imagestore2/%{REQUEST_URI} -f
RewriteRule ^(.+) /mnt/imagestore2/$1 [L]
    
por Matt Brunmeier 14.12.2015 / 20:17

2 respostas

1

Eu tenho esse trabalho através do mod_rewrite. Atualizei a configuração do vhost diretamente, em vez de usar um arquivo .htaccess. Eu acredito que poderia funcionar através do .htaccess, mas minhas regras de reescrita estavam um pouco erradas (note a falta /). Também foi necessário adicionar a declaração do Diretório para os diretórios de imagem.

O vhost tem a seguinte aparência:

DocumentRoot /var/www/html
<Directory /var/www/html>
  Order allow,deny
  Allow from all
</Directory>

RewriteEngine on

RewriteCond "/mnt/imagestore1%{REQUEST_URI}" -f [OR]
RewriteCond "/mnt/imagestore1%{REQUEST_URI}" -d
RewriteRule ^/?(.*)$ /mnt/imagestore1/$1 [L]

RewriteCond "/mnt/imagestore2%{REQUEST_URI}" -f [OR]
RewriteCond "/mnt/imagestore2%{REQUEST_URI}" -d
RewriteRule ^/?(.*)$ /mnt/imagestore1/$1 [L]

<Directory /mnt/imagestore1>
  Order allow,deny
  Allow from all
</Directory>

<Directory /mnt/imagestore2>
  Order allow,deny
  Allow from all
</Directory>
    
por 14.12.2015 / 23:56
0

Os aliases não funcionam dessa maneira. A primeira partida será considerada pelo apache e a segunda será ignorada. Veja aqui:

link

..the Aliases and Redirects are processed in the order they appear in the configuration files, with the first match taking precedence.

E para responder à sua pergunta: é pelo mesmo motivo que não é possível atender a vários diretórios no mesmo URL.

    
por 14.12.2015 / 20:23