2

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]

2 Answers2

2

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>
MrWhite
  • 11,643
  • 4
  • 25
  • 40
0

The aliases won't work that way. The first match will be considered by apache and second ignored. See here:

https://httpd.apache.org/docs/2.4/mod/mod_alias.html

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

And to answer your question: it is for the same reason, it is not possible to serve multiple directories from the same url.

Diamond
  • 8,791
  • 3
  • 22
  • 37