有没有办法在liferay中创建/处理友好的URL?
http://myserver.com/JonDoe
...其中John Doe是应显示其数据的客户的名称。
更详细一点:
我不是在谈论摆脱" web"或" group"对于友好的网址,我正在考虑在第一个" /"之后有一个友好的网址。
我们希望以http://server/ClientName的形式创建URL,其中ClientName解析为客户端的名称。这是一个问题,因为通常liferay会在第一个" /"之后出现友好的URL。所以我们不得不以某种方式拦截它。
这个过程应该是这样的(伪代码):
1)在第一次" /"
之后检查值2)如果" /"之后的值是客户端的名称,将用户发送到客户端显示页面并显示客户端信息
3)如果没有具有给定名称的客户端,请将其解释为友好URL并执行正常的liferay行为。
有没有办法在liferay中这样做?
答案 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的参数来完成相同的操作。