Что-то вроде include_path на уровне сервера

DeadMorozBLR

Новичок
Что-то вроде include_path на уровне сервера

В своем проекте я использую следующую архитектуру: все файлы проекта разбиты на 2 репозитория: ядро и файлы проекта. В первом хранятся файлы, общие для всех проектов, а во втором - специфичные для данного проекта.
Для объединения этих репозиториев я добавляю в директиву include_path пути к этим репозиториям
PHP:
ini_set("include_path", implode(PATH_SEPARATOR, array
(
    '.',
    REPOSITORY_PROJECT,
    REPOSITORY_CORE
)));
При этом при подключении файла с помощью include() файл сначала ищется в директории файла, в котором происходит подключение, потом в проектном репозитории, а потом в ядре. Таким образом, в проекте можно "переписать" файл ядра, поместив его по аналогичному пкти в проектом репозитории.

Вопрос в том, можно ли организовать с помощью средств Apache подобное поведение для файлов, доступных из веб, как то картинки, javascript'ы и т.п., причем прозрачно для пользователя, т.е. при запросе, например
Код:
/images/someimage.jpg
сначала сервер искал файл
Код:
{REPOSITORY_PROJECT}/images/someimage.jpg
а потом
Код:
{REPOSITORY_CORE}/images/someimage.jpg
Конечно же, подходит вариант с явным указанием путей к файлам:
Код:
/core/images/someimage.jpg
/projects/someproject/images/someimage.jpg
однако интересно, возможно ли сделать так, как описано выше?
 

DeadMorozBLR

Новичок
Да, именно с его помощью я и пытался сделать подобное ранее, однако безуспешно (к сожалению, не могу сейчас привести те RewriteRules). У меня то происходило зацикливание типа
Код:
/images/someimage.jpg
/someproject/images/someimage.jpg
/someproject/someproject/images/someimage.jpg
и т.д.
, то вообще ничего не работало.

Не могли бы Вы привести кратенький пример для случая с "someimage.jpg", описанного в первом посте или указать на какую-нибудь литературу по этому вопросу кроме мануала )) ?
 

DeadMorozBLR

Новичок
Спасибо, я так понимаю, ты, Кром, имел ввиду "Поиск страниц больше чем в одном каталоге".
Я попробовал сделать по примеру, вот мой .htaccess:
Код:
Options +FollowSymlinks
RewriteEngine on

#   во-первых попытаемся найти это в dir1/...
RewriteCond         /home/test/dir1/%{REQUEST_FILENAME}  -f
RewriteRule  ^(.+)  /home/test/dir1/$1  [L]

#   во-вторых попытаемся найти это в dir2/...
RewriteCond         /home/test/dir2/%{REQUEST_FILENAME}  -f
RewriteRule  ^(.+)  /home/test/dir2/$1  [L]

#   иначе продолжаем для других директив Alias или ScriptAlias,
#   и т.д.
RewriteRule   ^(.+)  -  [PT]
Т.е. мой виртуальный сервер 'test' имеет корневую директорию в '/home/test/', я хочу, чтобы при запросе, например, http://test/123.html сначала искался файл /dir1/123.html, а потом /dir2/123.html, а что-то не работает, вот лог рерайта:
Код:
(3) [per-dir /home/test/] strip per-dir prefix: /home/test/123.html -> 123.html
(3) [per-dir /home/test/] applying pattern '^(.+)' to uri '123.html'
(4) RewriteCond: input='/home/test/dir1//home/test/123.html' pattern='-f' => not-matched
(3) [per-dir /home/test/] strip per-dir prefix: /home/test/123.html -> 123.html
(3) [per-dir /home/test/] applying pattern '^(.+)' to uri '123.html'
(4) RewriteCond: input='/home/test/dir2//home/test/123.html' pattern='-f' => not-matched
(3) [per-dir /home/test/] strip per-dir prefix: /home/test/123.html -> 123.html
(3) [per-dir /home/test/] applying pattern '^(.+)' to uri '123.html'
(2) forcing '/home/test/123.html' to get passed through to next API URI-to-filename handler
(1) [per-dir /home/test/] initial URL equal rewritten URL: /home/test/123.html [IGNORING REWRITE]
Может это не совсем тот пример, который мне нужен?
 
Сверху