Конвертация перезаписчиков из Apache в NGINX

У меня есть собственное приложение 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, чтобы мое приложение работало правильно?

Заранее спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как вы сказали, вы передаете дополнительные $ uri. Попробуй это:

location /admin {
  try_files $uri $uri/ /admin/index.php?$args;
}

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

MediaGiantDesign 10.04.2018 16:49

Другие вопросы по теме