YiiFramework Как использовать YII параллельно с другим фреймверком?

xintrea

Новичок
Здравствуйте!

Вопрос в следующем. Есть заготовка сайта, админка которого написана на CodeIgniter-2.

Я хочу потихоньку переползти на Yii, и для тренировки хочу сделать фронтэнд на Yii (версии 1.x.x), а бэкэнд оставить на CodeIgniter. Но есть загвоздка. И у CodeIgniter, и у Yii в качестве первичного скрипта используется index.php в корне сайта.

Я хочу сделать два скрипта: indexCi.php и indexYii.php. Нужно, чтобы при обращении к URL вида имяСайта/admin/... вызывалось выполнение indexCi.php, а при других урлах - indexYii.php. Вопрос: как это сделать?

Мне нужно понять, как это сделать на Apache2, а так же знать, можно ли настроить такое поведение на Nginx.

Текущий конфиг Апача (.htaccess) следующий:

PHP:
AddType image/x-icon .ico

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
  Order Deny,Allow
  Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
сделай админку отдельным приложением - полностью отдельный код на субдомене, но с одной же базой у админки и фронта
 

xintrea

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

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

Мне проще сделать index.php, в котором производить анализ URL и подключать либо indexCi.php либо indexYii.php. Но это будет нехорошо с точки зрения производительности. Хотелось бы отдать это действие на откуп вебсерверу.
 

hell0w0rd

Продвинутый новичок
xintrea,
PHP:
if (strpos($_SERVER['REQUEST_URI'], '/admin') === 0) {
    ...
}
такой код будет работать аналогично, или почти аналогично быстро серверу.
Любой фреймворк для роутинга использует регулярки "в лоб", и скорее у тебя там будет узкое место, чем здесь.
 

fixxxer

К.О.
Партнер клуба
У меня есть много хелперов, которые используются в админке и должны использоваться на сайте.
Что мешает их положить в отдельный репозиторий и подключать через композер, или, на худой конец, субрепозиториями?
 

MiksIr

miksir@home:~$
А в чем сложность? Как-то так
Код:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .? - [S=2]
RewriteRule ^admin/.* /yii/index.php [L]
RewriteRule .* /ci/index.php [L]
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
fixxxer, это ж надо с композером разобраться и с репозиториями :) а ему некогда, ему рубить надо
 

fixxxer

К.О.
Партнер клуба
MiksIr, раз он спрашивает про nginx, видимо, у него не шаред. Зачем тогда мучаться с говнореврайтами, если есть человеческий <Location>?

grigori, с композером в любом случае когда-то придется разобраться, это уже дефакто стандарт.
 
Сверху