阻止 nginx 处理子集 url

阻止 nginx 处理子集 url

我运行了一个由 Symfony 控制器渲染的 Angular 应用。我的 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 部分 ;-)

感谢您的帮助!

答案1

找到了一个不使用 nginx 的解决方案。我的思路可能在某个时候被堵塞了。

根据提供的解决方案这个stackoverflow答案我做的:

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

相关内容