У меня есть собственное приложение PHP, которое следует базовому шаблону разработки MVC. Структура каталогов приложений следующая:
admin/
default/
index.php
В админке есть еще один index.php (именно так он обрабатывает запросы к / admin).
В apache это работало, помещая файл .htaccess в каждый каталог (admin и doc root), настраивая перезапись, и приложение работает. В NGINX все не так просто.
Я могу заставить работать базовое приложение "по умолчанию", используя его в моем nginx.conf:
if (!-e $request_filename)
{
rewrite ^(.+)$ /index.php?path=$1 last;
}
(мы работаем на vhosts, поэтому я не могу указать местоположение / или получаю повторяющуюся ошибку правила).
Это заставляет интерфейсное приложение работать, но когда я пытаюсь получить доступ к части приложения / admin, загружается экран входа в систему, но когда я пытаюсь отправить, и он пытается попасть в конечную точку 'admin / index / index', он терпит неудачу, поскольку мое правило перезаписи не работает. Вот что у меня есть для перезаписи в NGINX:
location /admin {
try_files $uri $uri/ /admin/index.php?path=$uri&$args;
}
Я думаю, проблема в том, что $ uri передается в / admin / index / index, а не в том, что должно быть, и находится в Apache: / index / index.
Может ли кто-нибудь помочь мне исправить эти правила NGINX, чтобы мое приложение работало правильно?
Заранее спасибо.






Как вы сказали, вы передаете дополнительные $ uri. Попробуй это:
location /admin {
try_files $uri $uri/ /admin/index.php?$args;
}
Спасибо! Это действительно сработало. Еще немного поработав с этим, я закончил переписывание следующим образом: rewrite /admin/(.*) /admin/index.php?path=$1 break; перезаписать ^ (. +) $ /index.php?path=$1 last;