CodeIgniter URI Routing (htaccess) с несколькими приложениями - PullRequest
1 голос
/ 03 июня 2011

Привет, сообщество stackoverflow,

У меня небольшая проблема с моим CodeIgniter.Я использую два приложения в папке приложений.Первый - это внешний интерфейс, второй - внутренний.

В моем корневом каталоге у меня есть два файла .php.Index.php, ведущий к каталогу frontend, и backend.php, ведущий к каталогу backend.

Поскольку я использую mod rewrite для получения чистых URL, есть проблема с этим.Структура URL выглядит следующим образом: www.domain.com/controller/action

Это действие контроллера в моем приложении внешнего интерфейса.

Я использую htacces, чтобы избавиться от / index.php / между доменом и контроллером.Чтобы получить доступ к своему бэкэнд-приложению, я хочу, чтобы мой URL был таким: www.domain.com/admin/controller/action

, поэтому у меня есть следующее правило перезаписи:

RewriteCond %{REQUEST_URI} ^admin.*
RewriteRule ^admin/(.*)$ /backend.php?/$1 [L]

Теперь проблемаCodeIgniter предполагает, что / backend / является первым сегментом URI, и хочет ошибочно воспринимать его как мой контроллер.

Действительно ли мне нужно редактировать ядро ​​CodeIgniter, чтобы запретить ему использовать URI запроса сервераили есть еще один трюк?

Заранее спасибо, Томас

Ответы [ 2 ]

1 голос
/ 03 июня 2011

Это действительно не сработает.Проверьте константы config / config.php и config / settings.php и т. Д., Чтобы узнать, какие константы необходимо настроить ... Каждое приложение необходимо запустить в отдельном каталоге «application».Также стоит спросить себя, нужно ли им вообще быть «отдельными» приложениями ...

По сути, прекратите идти по этому пути, пока вы все еще можете, это приведет к разбитому сердцу и множеству ужасного кода.*

0 голосов
/ 03 июня 2011

Вместо того, чтобы иметь две папки приложений, я бы предложил иметь папку в контроллере с именем «admin», вы также можете иметь папки внутри вашей models, views (даже libraries) с именем «admin», которые вы могли бызатем выйдите из этого проекта и перейдите в другие проекты.

Это позволит вам просто использовать стандартный rewrite для удаления index.php из URL и domain.com/adminбудет указывать на вашу папку администратора в контроллере.

Вам просто нужно убедиться, что в корневой папке контроллера нет контроллера с именем 'admin.php', иначе вы столкнетесь с проблемами.

Для получения дополнительной информации взгляните на: Организация ваших контроллеров в подпапках в документации по CI.

Также обратите внимание, что готовая инфраструктура MVC не всегда лучше всего используется длясоздание CMS.Обычно инфраструктура MVC лучше всего использовать для быстрого создания веб-приложений, которые имеют довольно статический routes, указывающий на конкретный controllers.CMS, с другой стороны, имеют тенденцию давать полный контроль над сайтом, что приводит к маршрутам, управляемым базой данных, которые часто устраняют необходимость в типичных controllers, если у вас нет сильно модифицированной системы маршрутизации.

...