我运行了一个由 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');
}
}