Назад | Перейти на главную страницу

запретить nginx обрабатывать подмножество URL

Я запускаю приложение Angular, созданное с помощью контроллера Symfony. Мое приложение Symfony основано на http://localhost/portal и имеет маршрут на http://localhost/portal/shop/ (который отображает приложение Angular).

Моя текущая конфигурация nginx хорошо работает для этого URL.

Когда я достигну http://localhost/portal/shop/.* Я хочу, чтобы nginx запускал приложение Symfony на контроллере http://localhost/portal/shop/ и позвольте остальной части uri обрабатывать маршрутизацию Angular.

Мои знания о nginx ограничены. Это возможно ? Если да, то как этого добиться?

Мое текущее местоположение для обработки /portal/shop является :

location /portal {
    root $projectroot/portal/web;
    rewrite ^/portal/?(.*)$ /app_dev.php/$1 break;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $projectroot/portal/web/$fastcgi_script_name;
    fastcgi_param HTTPS off;
    fastcgi_pass php:9000;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
}

Дайте мне знать, если вам понадобится больше моего файла конфигурации. Он довольно большой, поскольку он также обрабатывает раздел api ;-)

Спасибо за помощь!

Нашел решение без nginx. В какой-то момент мой разум может быть заблокирован.

На основе решения, представленного в этот ответ stackoverflow Я сделал это:

class ShopController extends Controller {
    /**
     * @Route("/shop/{angularRoute}", name="shop", requirements={"angularRoute": ".*"})
     */
    public function __invoke() {
        return $this->render('shop.html');
    }
}