Liferay顶级友好URL

Liferay顶级友好URL,liferay,liferay-6,Liferay,Liferay 6,有没有一种方法可以像这样在liferay中创建/处理友好的URL http://myserver.com/JonDoe 。。。其中John Doe是应显示其数据的客户端的名称 更详细一点: 我不是说为了友好的url而放弃“web”或“group”,我是说在第一个“/”之后就有一个友好的url 我们希望以ClientName解析为客户端名称的形式创建URL。这是一个问题,因为通常liferay希望在第一个“/”之后有一个友好的URL。所以我们不得不设法拦截它 过程应该是这样的(伪代码): 1)

有没有一种方法可以像这样在liferay中创建/处理友好的URL

http://myserver.com/JonDoe
。。。其中John Doe是应显示其数据的客户端的名称

更详细一点:

我不是说为了友好的url而放弃“web”或“group”,我是说在第一个“/”之后就有一个友好的url

我们希望以ClientName解析为客户端名称的形式创建URL。这是一个问题,因为通常liferay希望在第一个“/”之后有一个友好的URL。所以我们不得不设法拦截它

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

1) 检查第一个“/”后的值

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

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


在liferay中有什么方法可以做到这一点吗?

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


到目前为止,这是一个简单的配置。如果你想让/JonDoe指向/JoeShmoe以外的另一个站点(例如,只需去掉/web/或/group/),你就必须深入挖掘并编写一些定制插件来更改名称解析(和URL的生成)

听起来你想去掉URL的/web/或/group/部分?通过正确配置虚拟主机,您可以将站点映射到域名,然后您可以完全自由地命名页面,甚至可以按层次(例如/JonDoe/home)


到目前为止,这是一个简单的配置。如果你想让/JonDoe指向/JoeShmoe以外的另一个站点(例如,摆脱/web/或/group/),你必须深入挖掘并编写一些定制插件来更改名称解析(和URL的生成)

如果你想为一个页面设置一个URL,你可以为该页面设置友好的URL(请参见Olafs关于虚拟主机的备注)

如果希望一个页面有一组有限的URL,可以为每个URL创建一个链接到页面类型的页面,并选择原始页面。要在呈现portlet时识别当前URL,可以使用
PortalUtil.getCurrentURL(renderRequest)


如果你想在一个页面上有多个URL,你可以使用
FriendlyUrlMapper
,它允许像
http://myserver.com/page/-/myPortlet/JonDoe


如果您想拥有多个“根”URL(我的意思是没有
/page/-/myPortlet
部分),您必须创建一个Liferay EXT插件,扩展
com.Liferay.portal.util.PortalImpl
并覆盖
getPortletFriendlyURLMapperLayoutQueryStringComposite
。我通过实现一种策略来检查特定URL的页面是否存在,否则将该URL用作FriendlyURLMapper的参数.

如果您想为一个页面设置一个URL,只需为该页面设置友好的URL即可(请参见Olafs关于虚拟主机的备注)

如果希望一个页面有一组有限的URL,可以为每个URL创建一个链接到页面类型的页面,并选择原始页面。要在呈现portlet时识别当前URL,可以使用
PortalUtil.getCurrentURL(renderRequest)


如果你想在一个页面上有多个URL,你可以使用
FriendlyUrlMapper
,它允许像
http://myserver.com/page/-/myPortlet/JonDoe


如果您想拥有多个“根”URL(我的意思是没有
/page/-/myPortlet
部分),您必须创建一个Liferay EXT插件,扩展
com.Liferay.portal.util.PortalImpl
并覆盖
getPortletFriendlyURLMapperLayoutQueryStringComposite
。我通过实现一种策略来检查特定URL的页面是否存在,否则将该URL用作FriendlyURLMapper的参数.

Hi-Olaf,我认为客户请求的成本相当高,因为这需要区分实际页面/我的页面和公司名称/公司名称。我会再考虑一下……Hi-Olaf,我认为客户请求的成本相当高,因为它需要区分实际页面/我的页面和公司名称/公司名称公司名称。我会再考虑一下……你能添加一些详细信息吗?你需要一个特定页面的友好URL吗?这是可能的,就像Olaf已经解释过的那样?或者你想要一个页面上特定内容的友好URL。在这种情况下,只有
http://myserver.com/page/-/myPortlet/JonDoe
-或者您可以修补Liferay以匹配您的用例,这也是可能的。您好,Tobias,客户端希望以http//server/ClientName格式输入URL,该格式应包含客户端的所有数据并显示它。这是一个问题,因为Liferay将尝试解析名为“ClientName”的站点。因此,我需要添加一些逻辑,尝试使用Clientname查询客户端,如果找到该客户端,它将把用户传输到客户端显示页面。如果找不到客户端,它将把字符串解释为友好url,并将用户转发到那里(标准liferay行为)。您可以添加更多详细信息吗?您是否需要一个特定页面的友好URL?这是可能的,正如Olaf已经解释的那样?或者您是否希望在页面上有一个特定内容的友好URL。在这种情况下,只有
http://myserver.com/page/-/myPortlet/JonDoe
-或者修补Liferay以匹配您的用例,这也是可能的。嗨,Tobias,客户