Динамический .htaccess - PullRequest
       7

Динамический .htaccess

0 голосов
/ 23 августа 2010

Я создаю модульную CMS с использованием платформы codeigniter, основной каталог ресурсов:

/public/assets/[admin|public]/[css|images|js]

мой текущий htaccess направляет все, кроме запросов, начинающихся с 'public', в индекс.php файл.

Новая система модулей позволяет каждому модулю иметь свои собственные активы, которые будут расположены по адресу

application/modules/*SOME_MODULE*/assets/[admin|public]/[css|images|js]

Мой вопрос заключается в том, можно ли создать правило для остановки чего-либоиз каталога ресурсов модуля, который направляется в index.php?

Мой текущий .httacces:

RewriteEngine on

RewriteCond $1 !^(index\.php|images|robots\.txt|public/*)
RewriteRule ^(.*)$ /CI-Playground/index.php/$1 [L]

1 Ответ

0 голосов
/ 27 августа 2010

Предполагая, что ваши URL будут полным путем к различным каталогам ресурсов модулей, вы можете легко исключить их из перезаписи:

RewriteEngine on

RewriteCond $0 !^(index\.php|images|robots\.txt|public/)
RewriteCond $0 !^application/modules/[^/]+/assets/(admin|public)/(css|images|js)
RewriteRule ^.*$ /CI-Playground/index.php/$1 [L]

Возможно, вы захотите вырезать часть application/modules, чтобы сделать путь запроса короче, а структуру каталогов - менее открытой, что можно сделать следующим образом:

RewriteEngine on

RewriteCond $0 !^(index\.php|images|robots\.txt|public/)
RewriteCond $0 !^[^/]+/assets/(admin|public)/(css|images|js)
RewriteRule ^.*$ /CI-Playground/index.php/$0 [L]

RewriteRule ^[^/]+/assets/(admin|public)/(css|images|js).*$ application/modules/$0

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

...