Пользовательский PHP MVC Framework: как обеспечить совместимость с .htaccess? - PullRequest
1 голос
/ 03 августа 2011

Я занимаюсь разработкой системы CMS на основе фреймворка PHP MVC.

У меня на сервере WAMP следующая структура каталогов:

c:/<webroot>/application/ (contains all Ms Vs and Cs)
c:/<webroot>/config/ (contains application.ini)
c:/<webroot>/public/ (contains /img, /js, & /css)
c:/<webroot>/index.php (entry point of MVC)
c:/<webroot>/.htaccess

.htaccess содержит:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

В системе больше нигде нет файлов .htaccess.

Правила .htaccess предназначены для реализации перезаписи URL в стиле Zend-framework http://HTTP_HOST/controller/action/key/value/.../key/value/ в стиле URLS

Насколько я могу судить, это работает довольно хорошо, когда MVC сидит в корне веб-хоста.

Однако, как только я углубляюсь в одну папку, все разваливается: Скажитенапример, я хочу, чтобы веб-сайт MVC размещался из корня, а его CMS на основе MVC - на глубоком уровне (/ admin /).Наличие указанного выше файла .htaccess, похоже, возвращает все запросы к CMS обратно на корневой сайт ... Нужно ли разное правило .htaccess для каждой папки?Есть ли правило, которое может быть написано для игнорирования запросов к CMS корневым файлом .htaccess?

Спасибо!

1 Ответ

0 голосов
/ 03 августа 2011

.htaccess правила применяются на основе иерархии каталогов. Если в подкаталоге нет правила .htaccess, оно будет соблюдать правила, определенные в родительском каталоге (или выше, пока не будет найден файл .htaccess) Если файл .htaccess находится в подкаталоге, применяемые правила представляют собой совокупность уже определенных правил и любых заменяющих правил, которые определены.

В вашем случае вы можете написать правила в своем корневом .htaccess для работы с подкаталогом администратора. Однако, вероятно, проще и понятнее определить новый файл .htaccess в подкаталоге admin.

...