Serving multiple directories outside of web root from the same URL with Apache2
Is it possible to set up Apache to serve multiple directories from the same URL?
For example, given that I have images in two locations: /mnt/imagestore1, /mnt/imagestore2. I would like mysite.com/images/file.jpg to display images from either directory.
It does not seem to work with Aliases like so:
Alias /images /mnt/imagestore1
Alias /images /mnt/imagestore2
And using mod_rewrite with an .htaccess in the document root hasn't worked either, although my understanding of mod_rewrite may be off here:
RewriteCond /mnt/imagestore1/%{REQUEST_URI} -f
RewriteRule ^(.+) /mnt/imagestore1/$1 [L]
RewriteCond /mnt/imagestore2/%{REQUEST_URI} -f
RewriteRule ^(.+) /mnt/imagestore2/$1 [L]
Solution 1:
I've got this working through mod_rewrite. I updated the vhost configuration directly instead of using an .htaccess
file. I believe it could work through the .htaccess
but my rewrite rules were a bit off (note the missing /
). It was also necessary to add the <Directory>
declaration (to allow access) for the image directories.
The vhost looks as follows:
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>