Я работаю над проектом Zend Framework, где я наткнулся на проблему. Проблема возникает из-за того, что модули являются гражданами второго сорта в Zend Framework. В моем проекте я хотел бы, чтобы для каждого модуля была папка, содержащая файлы, к которым нужно получить доступ извне - файлы, такие как таблицы стилей, javascripts и изображения.Apache - «динамическое» правило перезаписи
Теперь, как это сделать. С проектом Zend Framework У меня есть структура папок, которая выглядит следующим образом:
- применение/
- модули/
- moduleOne/
- общественности/
- таблицы стилей .css
- общественности/
- moduleTwo/
- moduleThree/
- moduleOne/
- модули/
- общественных/
- index.php
Стандарт .h taccess файл находится в общественной/ папке держит это:
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 является публичными/ папку . Все запросы перенаправляются через файл index.php, в который входит компонент маршрутизатора Zend Framework. Теперь я ни в коем случае не специалист по Apache или mod_rewrite, так что простите меня, если это просто глупо. Я предполагаю, что я реализую дополнительный шаг в существующем правиле перезаписи, чтобы, если я запрошу http://project/public/moduleOne/stylesheet.css, он, например, решит /var/www/project/application/modules/moduleOne/public/stylesheet.css.
Таким образом, шаги, которые необходимо выполнить, это проверить, является ли первый элемент в URI public/, если он есть, мы берем следующий сегмент в качестве имени модуля и используем его в пути, который мы пытаемся для разрешения и попытки обслуживания файла.
Возможно ли это, или у кого есть лучшее предложение?
Спасибо за ваше время Кристиан Расмуссен
Привет, Ололо, извините за то, что забыли об этом вопросе. Вы действительно были прав в отношении доступа к ресурсам вне корня документа. Я искренне благодарю вас за ваш ответ. –