Назад | Перейти на главную страницу

Обслуживание нескольких каталогов вне корневого веб-сайта с одного и того же URL-адреса с помощью Apache2

Можно ли настроить 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-адреса.