【问题标题】:Adobe CQ. Getting current page pathAdobe CQ。获取当前页面路径
【发布时间】:2014-06-10 10:15:29
【问题描述】:

我需要将当前页面路径设置为canocical 标签。不幸的是,我这里有一些错误。在此代码上:

<%
ResourceResolver resolver = slingRequest.getResourceResolver();
Externalizer externalizer = resolver.adaptTo(Externalizer.class);
String canonUrl = externalizer.publishLink(resourceResolver, "http", currentPage.getPath());
%>
<link rel="canonical" href="${canonUrl}" />

我有这个输出:

<link rel="canonical" href="" />

怎么了。但是如果我像这样设置canonical 标签:

<link rel="canonical" href="${currentPage.path}" />

我有这个输出:

<link rel="canonical" href="/content/example/eu/germany/de_de/about.html" />

几乎没问题。而现在,我只需要添加域名(http://example.com/content/example/eu/germany/de_de/about.html)。但是我怎么能在没有硬编码的情况下做到这一点呢?该方法在本地化页面上也应该可以正常工作。

【问题讨论】:

  • 由于您使用的是 jstl,因此在定义 canonUrl 之后,您将其设置为页面上下文,对吗? pageContext.setAttribute("canonUrl",canonUrl)

标签: java jsp jstl adobe aem


【解决方案1】:

您需要在 Externalizer Service 中配置域。 转到 OSGi 控制台 (/system/console/components) 并查找 com.day.cq.commons.impl.ExternalizerImpl。然后单击配置并为本地、作者和发布添加行。例如:

local http://localhost:4502
author http://author.example.com
publish http://publish.domain.com

【讨论】:

    【解决方案2】:

    你可以通过jstl从一个bean类中读取主机——

    private String getHost(HttpServletRequest request)
      {
        String xHost = request.getHeader("x-forwarded-host");
        if(xHost == null)
        {
            String host = request.getHeader("Host");
            if(host == null)
            {
                String urlS = request.getRequestURL().toString();
                try
                {
                    return (new URI(urlS)).getAuthority();
                }
                catch(URISyntaxException use)
                {
                    return (new 
                  StringBuilder()).append(request.getServerName())
                   .append(":").append(request.getServerPort()).toString();
                }
            } else
            {
                return host;
            }
           }
           if(xHost.indexOf(',') >= 0)
            xHost = xHost.substring(xHost.indexOf(','));
        return xHost.trim();
       }
    

    【讨论】:

      猜你喜欢
      • 2021-07-23
      • 1970-01-01
      • 2014-09-04
      • 2014-02-11
      • 2014-05-26
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多