Liferay顶级友好URL

时间:2016-09-09 20:36:14

标签: liferay liferay-6

有没有办法在liferay中创建/处理友好的URL?

http://myserver.com/JonDoe

...其中John Doe是应显示其数据的客户的名称。

更详细一点:

我不是在谈论摆脱" web"或" group"对于友好的网址,我正在考虑在第一个" /"之后有一个友好的网址。

我们希望以http://server/ClientName的形式创建URL,其中ClientName解析为客户端的名称。这是一个问题,因为通常liferay会在第一个" /"之后出现友好的URL。所以我们不得不以某种方式拦截它。

这个过程应该是这样的(伪代码):

1)在第一次" /"

之后检查值

2)如果" /"之后的值是客户端的名称,将用户发送到客户端显示页面并显示客户端信息

3)如果没有具有给定名称的客户端,请将其解释为友好URL并执行正常的liferay行为。

有没有办法在liferay中这样做?

2 个答案:

答案 0 :(得分:1)

听起来你想要摆脱网址的/ web /或/ group /部分?这可以通过正确配置虚拟主机 - 您将站点映射到域名,然后您可以完全自由地命名页面,甚至是层次结构(例如/ JonDoe / home)

到目前为止,这是简单的配置。如果你想/ JonDoe指向另一个站点而不是/ JoeShmoe(例如只是摆脱/ web /或/ group /),你将不得不深入挖掘写一些改变名称解析(和生成URL)的自定义插件

答案 1 :(得分:1)

如果您希望网页包含一个网址,则可以为该网页设置友好网址(请参阅Olafs关于虚拟主机的评论)

如果您希望为一个网页设置有限网址,则可以为每个网址创建链接到网页类型的网页,然后选择原始网页。要在呈现portlet时标识当前URL,可以使用PortalUtil.getCurrentURL(renderRequest)

如果您希望一个页面包含多个网址,则可以使用FriendlyUrlMapper,其中包含http://myserver.com/page/-/myPortlet/JonDoe等网址。

如果你想拥有很多" root"网址(我的意思是没有/page/-/myPortlet部分),您必须创建一个Liferay EXT插件,扩展com.liferay.portal.util.PortalImpl并覆盖getPortletFriendlyURLMapperLayoutQueryStringComposite。我通过实施一个策略来检查特定给定URL是否存在页面,并使用URL作为FriendlyURLMapper的参数来完成相同的操作。