Я работаю над проектом Zend Framework, где натолкнулся на небольшую проблему.
Проблема возникает из-за того, что модули являются гражданами 2-го класса в Zend Framework. В моем проекте я хотел бы, чтобы у каждого модуля была папка, содержащая файлы, к которым необходимо обращаться извне - такие файлы, как таблицы стилей, javascripts и изображения.
Теперь, как это сделать. В проекте Zend Framework у меня есть структура папок, которая выглядит следующим образом:
- применение /
- модули /
- moduleOne /
- moduleTwo /
- moduleThree /
- публичный /
Стандартный файл .htaccess, расположенный в папке public / , содержит:
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Как это работает, так это то, что apache DocumentRoot проекта является папкой public / . Все запросы перенаправляются через файл index.php , в который вступает компонент маршрутизатора Zend Framework. Теперь я ни в коем случае не эксперт ни по Apache, ни по mod_rewrite, так что извините, если это просто глупо. Я предполагаю, что я реализую дополнительный шаг в существующем правиле перезаписи, чтобы, если я запрашиваю http://project/public/moduleOne/stylesheet.css, он, например, преобразуется в / var / www / project / application / modules / moduleOne / public /stylesheet.css.
Таким образом, необходимо выполнить следующие шаги: проверить, является ли первый элемент в URI public / , если это так, мы берем следующий сегмент в качестве имени модуля и используем его в пути, который мы пытаемся разрешить и попытаться обслужить файл.
Это вообще возможно или у кого-то есть лучшее предложение?
Спасибо за ваше время
Кристиан Расмуссен