Symfony2 语言按主机限制(从服务重定向?)


symfony2 languge restrict by host (redirect from service?)

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

我无法弄清楚如何将用户从一种语言重定向到另一种
语言例如:
如果 site.com 只有德朗古格(site.com/de)
有人试图直接转到 site.com/en 我想立即将他们重定向到 site.com/de。

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

我认为有一种方法可以从服务侦听器执行此操作,但我不知道传递给它才能从中重定向。

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

回答您的问题时,请尝试使用 JMSI18nRoutingBundle 捆绑包或类似内容。在这种情况下,您可以重载 Router/DefaultLocaleResolver.php 类,将其替换为配置 (jms_i18n_routing.router.class )。

在过载的路由器中,通过选中$request->getClientIp();将基于主机的解析添加到 resolveLocale 函数。这样,不仅主页将被重定向到"适当的"区域设置,而且还将重定向到应用程序中的任何链接。

我认为这是玩具实现的最干净的方式。

祝你好运!