Я хотел бы сопоставить несколько каталогов с одним и тем же местом с Apache, ожидая поведения, аналогичного этому: предположим, что /static
местоположение должно поддерживаться каталогами /srv/static1
и /srv/static2
. Тогда если /static/image.png
запрашивается, я хотел бы, чтобы Apache проверил файлы /srv/static1/image.png
и /srv/static2/image.png
, в этой последовательности. Возвращается первый найденный файл; если ни один из них не найден, возвращается классическая ошибка 404.
Конечно, решение состоит в том, чтобы использовать сценарий для создания каталога символических ссылок, указывающих на нужное место, и использовать его, например, в Alias
директива. Интересно, есть ли более прямой способ, который не требует от меня развертывания дополнительного оборудования.
Спасибо!
Это легко сделать с помощью mod_rewrite. Вы можете настроить его так, чтобы он имел условие, что если файл не существует в первом каталоге, он должен искать его во втором, и так далее.
Вот краткий пример конфигурации; для получения дополнительной информации см. канонический вопрос о mod_rewrite и документация apache mod_rewrite.
RewriteEngine on
# first try to find it in dir1/...
# ...and if found stop and be happy:
RewriteCond %{DOCUMENT_ROOT}/dir1/%{REQUEST_URI} -f
RewriteRule ^(.+) %{DOCUMENT_ROOT}/dir1/$1 [L]
# second try to find it in dir2/...
# ...and if found stop and be happy:
RewriteCond %{DOCUMENT_ROOT}/dir2/%{REQUEST_URI} -f
RewriteRule ^(.+) %{DOCUMENT_ROOT}/dir2/$1 [L]
# else go on for other Alias or ScriptAlias directives,
# etc.
RewriteRule ^ - [PT]