Pimcore 多语言站点静态路由

Posted

技术标签:

【中文标题】Pimcore 多语言站点静态路由【英文标题】:Pimcore multilanguage site static route 【发布时间】:2015-07-19 09:00:56 【问题描述】:

我最近刚开始在工作中使用 Pimcore,现在我正在开展一个项目,该项目由三种语言组成,每种语言都在各自的树中。

今天网站的网址是 my-site.com/LANGUAGE/sub-page 例如:my-site.com/se/about

但我们想要的是 LANGUAGE.my-site.com/sub-page。 例如:se.my-site.com/about

我尝试过使用静态路由工具,但根本无法使用,而且我对 pimcore 的了解也有限。我找到了有关静态路由 (HERE) 的 Pimcore 文档,但我发现它并没有太大帮助。

我是否需要一个控制器和一个动作来处理这个问题。还是可以简单地使用静态路由工具来完成?

编辑: 当您右键单击站点时,我尝试使用“域工具”。但这仅在我通过将 127.0.0.1 设置为连接到 us.MYSITE.com 来更改计算机的主机文件时才有效。这不会成为网站上线时的问题吗?由于用户没有我的主机文件。 这就是我走静态路线的原因。

【问题讨论】:

我写了一个答案但删除了它,因为我不确定它是否完全符合您的要求。您想要针对不同内容使用不同的文档树,还是仅仅通过使用子域为一个文档树设置正确的语言? 我可能解释得不好。我的站点设置有一个根节点,该节点具有三个子站点,每种语言一个。所以每种语言都是独立的树。这工作和一切。问题是我不希望 URL 是 ROOT/LANGUAGE/Sub-page,而是希望它是 LANGUAGE.ROOT/Sub-page,例如:us.MYPAGE.com/about 而不是 MYPAGE.com/我们/关于请参阅原始帖子中的编辑。评论限制。 好的,然后我取消了我的答案,“站点”功能绝对是您想要解决的问题,您需要注意的是服务器上为您的子域提供正确的主机文件.用户不需要拥有这些文件,因为它们仅对正确处理传入请求很重要。我认为您当前的设置是在本地进行的? 【参考方案1】:

Pimcore 中的“站点”功能可让您执行此操作。

The documentation page 描述了您是如何设置的,但我会快速解释:

您基本上是这样设置文档树的,为您的每种语言创建一个常用文档:

在此之后,您需要做的就是通过右键单击并单击“用作站点”将这些文档更改为“站点”(图片取自文档):

如您所见,弹出窗口现在为您提供了一个字段,您可以在其中添加和编辑新域名以及子域。根据您使用的 Pimcore 版本,这可能看起来有点不同,文档显示的是旧版本。

这可能是您在创建站点后在较新版本中看到的内容,右键单击它并转到“编辑站点”:

这提供了一种更好的方式来管理您的域和其他域,您不必通过编辑逗号分隔列表来添加其他域,现在 textarea 中的每一行都类似于一个域。所以你需要做的是输入你的语言子域作为主域。

站点现在的行为与“主页”完全一样 - 位于文档根目录的站点和站点 - 功能的行为类似于您将设置的静态路由。

现在您还需要做的是设置您的服务器以将子域路由到您的 pimcore - 文件夹 this answer will probably help you out。主机不会有问题 - 正如您所提到的,因为它们无论如何都存储在服务器上,用户不需要这些,所以使用“站点”功能绝对是解决这个问题的方法通过静态路由 - 工具。

【讨论】:

【参考方案2】:

多语言站点的常用方法是为每种语言创建单独的文档树并设置内容主文档(称为content inheritance 功能)。然后对于每种其他语言,您可以创建“站点”并设置不同的子域。

- home (main launguage, main domain)
  - subpage_1
  - subpage_2
  - de (site = de.example.com)
    - subpage_1 (master-document = /home/subpage_1)
    - subpage_2 (master-document = /home/subpage_2)

【讨论】:

我想你误解了我的意思。我为每种语言设置了不同的“子站点”。但是我想更改 URL 以访问它们。以 LANGUAGE.MYSITE.com/sub-page 格式代替 MYSITE.com/LANGUAGE/sub-page

以上是关于Pimcore 多语言站点静态路由的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MVC 路由多语言 URL

CodeIgniter URI 路由(动态,多语言)

ASP.NET MVC 多语言实现——URL路由

在 Zend 中使用多语言路由器

Next JS 静态站点:将特定路由重定向到另一个站点?

URI 路由不起作用(多语言)