如何在 Magnolia CMS 中将用户从根节点重定向到其子节点



我的项目是使用 Magnolia 5.3 和 Blossom 开发的,并且使用的是 Magnolia 的企业版 - 标准版。

我是 Magnolia 和这个项目的新手。

该项目针对不同的国家和不同的语言。

它有国家和语言列表的第一页。例如。 www.localhost:8080显示此国家/地区列表页面。

当用户单击此页面的任何链接时,他将被重定向到所选语言的国家主页。

例如:语言为 L1 的国家/地区 C1 具有以下网址:www.localhost:8080/C1/L1

这显示了国家根页面的内容,即 C1

Each country has the same heirarchy in Magnolia CMS
C1 - Root Node of country C1
C1/XYZ1 - Page 1
C1/XYZ2 - Page 2
C2 - Root Node of country C2
C2/XYZ1 - Page 1
C2/XYZ2 - Page 2
and so on.

因此,如果我想访问国家/地区的任何根页面,那么 URL 将是:

www.localhost:8080/C1/L1

如果我想访问任何子页面,那么 URL 将是:

www.localhost:8080/C1/L1/XYZ1

到目前为止,这很好。

但是现在我想从用户中删除或隐藏国家/地区根页面。因此,如果用户手动键入www.localhost:8080/C1/L1

  1. 应警告用户未找到页面或
  2. 用户被重定向到页面1,即www.localhost:8080/C1/L1/XYZ1并显示页面1内容。

我尝试设置虚拟URIMapping,但这不起作用。

我也尝试删除 C1 页面,但我无法删除,因为这是根页面,

如果没有它的子页面,就无法删除根。

请帮助和指导我,我该怎么做?

谢谢

马诺吉

如果您使用的是企业版,您所要做的就是为您的站点配置域以使其正确识别,然后 Magnolia 将自动从所有链接中隐藏根节点。
如果您使用的是社区版,则无法实现,因为此功能仅在企业版中提供。

但是,如果您想重定向到所选站点的子页面(就像现在更新问题后一样),则需要创建一个虚拟 URI 映射来执行此操作。

有许多

可能的方法可以创建这样的映射,其中之一是:
1) 在 AdminCentral 中,转到配置应用程序并打开config:/modules/ui-admincentral/virtualURIMappingdefault
2) 将class更改为info.magnolia.multisite.MultiSiteRegexpVirtualURIMapping
3) 将fromURI更改为$
4) 将toUri更改为redirect:/XYZ1.html5)添加属性site并将其值设置为C1(假设您在WebDev/Sites中的站点称为C1

仅当您在站点配置中正确映射了域时,此操作才有效。如果您在第一次尝试时没有让它工作,请尝试使用它,更改值,仔细检查您是否正确配置了所有配置。尝试查看映射的代码,以确保您了解它的工作原理。最重要的是,检查您配置的其他 VirtualURIMapping(您可以在配置信息应用程序中查看所有内容)。

附加免责声明:如果您错误地设置了虚拟 uri 映射(特别是因为这个是基于正则表达式的,因此非常容易"扩展"它以对所有 url 做出反应),则可能会使您的实例无法访问。确保执行此操作时,请在开发实例上执行此操作,并且您有备份并且可以返回。仅通过导入以前创建和测试的映射将此类更改应用于生产环境。

呵呵,
一月

最新更新