Php 主机限制symfony2语言(从服务重定向?)

Php 主机限制symfony2语言(从服务重定向?),php,symfony,redirect,service,listener,Php,Symfony,Redirect,Service,Listener,我正在制作可以从不同主机运行的多语言网站。 某些主机只能使用一种语言。 我很难弄清楚如何将用户从一种语言重定向到另一种语言 例如: 如果site.com只有de language(site.com/de) 有人试图直接访问site.com/en,我想立即将他们重定向到site.com/de 或者如何基于主机限制区域设置前缀(应该是动态的)? 我认为有一种方法可以从服务侦听器实现这一点,但我不知道传递给它什么才能从它重定向。首先,我认为这种限制应该由httpd服务器配置提供。对我来说,这是一个基于

我正在制作可以从不同主机运行的多语言网站。
某些主机只能使用一种语言。

我很难弄清楚如何将用户从一种语言重定向到另一种语言
例如:
如果site.com只有de language(site.com/de)
有人试图直接访问site.com/en,我想立即将他们重定向到site.com/de

或者如何基于主机限制区域设置前缀(应该是动态的)?


我认为有一种方法可以从服务侦听器实现这一点,但我不知道传递给它什么才能从它重定向。

首先,我认为这种限制应该由httpd服务器配置提供。对我来说,这是一个基于远程主机IP允许/不允许访问的地方,然后重定向到站点的允许命名空间

回答你的问题,或类似问题。在这种情况下,您可以重载Router/DefaultLocaleResolver.php类,在配置中替换它(
jms_i18n_routing.Router.class

在过载的路由器中,通过选中
$request->getClientIp(),添加基于主机的解析。这样不仅主页会被重定向到“正确”的区域设置,而且应用程序中的任何链接也会被重定向

我认为这是一种最干净的方式

祝你好运