Silex双语URL路由

时间:2015-11-08 22:17:32

标签: localization url-routing silex

我想知道在Silex中实现所需内容的最佳方式是什么(见下文)。

这就是我想要的:

  • 所有网址必须以区域设置开头(/ en / page1,/ fr / page1,/ en / page2,/ fr / page2,....)
  • 当用户点击主页时,我会检查浏览器语言并将/ en或/ fr添加到主页
  • 在主页上添加/ en或/ fr时,有没有办法在没有重定向的情况下在Silex中执行此操作(我认为重定向主页不是一个很好的SEO练习(我在SEO中的知识非常有限,所以也许我错了))?

谢谢

2 个答案:

答案 0 :(得分:0)

您可以查看http://silex.sensiolabs.org/doc/organizing_controllers.html

特别是:

$app->mount('/blog', $blog);

所以使用这个我觉得你可以这样做:

$app->mount('/{_locale}', $site);

我没有尝试过,但我认为它会起作用,请让我知道:)。

答案 1 :(得分:0)

对我来说,这是Silex v2.x最简单,最干净的选择:

安装silex-local软件包

composer require pmaxs/silex-locale "^2.0"

将LocalServiceProvidet添加到app.php文件中:

$app->register(new Pmaxs\Silex\Locale\Provider\LocaleServiceProvider(), [
    'locale.locales' => ['en', 'ca', 'es'],
    'locale.default_locale' => 'en',
    'locale.resolve_by_host' => false,
    'locale.exclude_routes' => ['^_'],
]);

$app->register(new Silex\Provider\LocaleServiceProvider(), []);

这样,您就不必在端点中添加任何额外内容,而且默认情况下都会处理所有内容。

请查看https://github.com/pmaxs/silex-locale以获取有关Silex v1.x的信息。