Можно ли настроить Apache для обслуживания нескольких каталогов с одного и того же URL-адреса?
Например, если у меня есть изображения в двух местах: / mnt / imagestore1, / mnt / imagestore2. Я хотел бы, чтобы на mysite.com/images/file.jpg отображались изображения из любого каталога.
Кажется, это не работает с такими псевдонимами:
Alias /images /mnt/imagestore1
Alias /images /mnt/imagestore2
И использование mod_rewrite с .htaccess в корне документа также не сработало, хотя мое понимание mod_rewrite здесь может быть отключено:
RewriteCond /mnt/imagestore1/%{REQUEST_URI} -f
RewriteRule ^(.+) /mnt/imagestore1/$1 [L]
RewriteCond /mnt/imagestore2/%{REQUEST_URI} -f
RewriteRule ^(.+) /mnt/imagestore2/$1 [L]
У меня это работает через mod_rewrite. Я обновил конфигурацию vhost напрямую, а не использовал файл .htaccess. Я считаю, что это могло бы работать через .htaccess, но мои правила перезаписи были немного неправильными (обратите внимание на отсутствующий /). Также необходимо было добавить объявление Directory для каталогов изображений.
Vhost выглядит следующим образом:
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>
Псевдонимы так работать не будут. Первое совпадение будет рассмотрено apache, а второе - проигнорировано. Посмотреть здесь:
https://httpd.apache.org/docs/2.4/mod/mod_alias.html
.. Псевдонимы и перенаправления обрабатываются в порядке их появления в файлах конфигурации, причем первое совпадение имеет приоритет.
И чтобы ответить на ваш вопрос: по той же причине невозможно обслуживать несколько каталогов с одного и того же URL-адреса.