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

时间:2015-01-13 10:14:11

标签: php symfony redirect service listener

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

我无法弄清楚如何将用户从一种语言重定向到另一种语言 例如:
如果site.com只有de languge(site.com/de)
并且有人试图直接访问site.com/en我想立即将它们重定向到site.com/de。

或如何根据主机限制语言环境前缀(应该是动态的)?

我认为有一种方法可以从服务监听器那里做到这一点,但我不知道要传递给它以便能够从中重定向。

1 个答案:

答案 0 :(得分:0)

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

回答您的问题try to use JMSI18nRoutingBundle bundle或类似问题。在这种情况下,您可以重载Router / DefaultLocaleResolver.php类,将其替换为配置(jms_i18n_routing.router.class)。

在您的重载路由器中,选中$request->getClientIp();,将基于主机的解析添加到resolveLocale function。这样不仅可以将主页重定向到“正确”的语言环境,还可以重定向到应用程序中的任何链接。

我认为这是最简洁的玩具工具。

祝你好运!