2014-10-01 5 views
2

외부 URL에 나가는 경로를 다시 쓰는 슬링 매핑 설치가 있습니다. 이 재 작성의 예 : /content/www-sitename/home.html 나는 또한 LinkCheckerTransformerFactory를 구성 http://www.sitename.com/home.html슬링 매핑 다시 쓰기 규칙은 메타 태그의 경로를 다시 작성하지 않습니다.

에 다시 작성 될 것이다 : linkcheckertransformer.rewriteElements=["a:href","area:href","form:action","link:href","meta:content"]

페이지 구성 요소의 일부 HTML :

<head> 
    <link rel="canonical" href="/content/www-sitename/home.html" /> 
    <meta name="canonical" content="/content/www-sitename/home.html" /> 
</head> 

방문했을 때, 링크 만 : href가 다시 작성된 경우 meta : 콘텐츠가 변경되지 않음 :

<head> 
    <link rel="canonical" href="http://www.sitename.com/home.html" /> 
    <meta name="canonical" content="/content/www-sitename/home.html" /> 
</head> 

주목할만한 점은 링크 : href가 linkcheckertransformer.rewriteElements을 포함하도록 구성하기 전에 다시 작성되지 않았기 때문입니다. 이 변경이 link : href에는 작동하지만 meta : content에는 작동하지 않는 이유는 무엇입니까? 사용자 정의 다시 쓰기 필터를 만드는 것 외에도 meta : content 속성의 링크를 다시 작성하려면 어떻게해야합니까?

답변

5

괴상한 대답은 기본적으로 태그 만 다음을 지원 HTML 구문 분석을 담당하는 내부 슬링 메커니즘 (htmlparser) 올바른 :

내 질문에 대답 참조 script, body이므로 meta:content을 LinkChecker 구성에 추가하더라도 CQ는 <meta>을 처리해야하는 태그로 인식하지 못합니다.

  • JCR : 인 프라이 = NT : 다음 속성 /libs/cq/config/rewriter/default 아래 generator-htmlparser라는 노드 생성 htmlparser를 재구성하기 위해

  • includeTags의 = [A, AREA, FORM, BASE, LINK 구조화를 SCRIPT, BODY, META]

includeTags 속성은 다중 값이어야하므로 앞으로 다른 태그를 추가 할 수 있습니다.

  1. 복사 /libs/cq/config/rewriter/default/apps/YOURAPP/config/rewriter/my-rewriter에 그 아이 :

    당신이 /libs 아래의 내용을 우선 자신의 라이터의 구성을 만들지 않으

    .
  2. order 속성은 my-rewriter에서 1으로 설정하십시오.
  3. my-rewriter 아래에 generator-htmlparser을 생성하십시오.
+0

둘 다 감사합니다! _libs_를 수정하지 않고이 작업을 수행 할 수있는 방법이 있습니까? _apps_ 아래의 위치에 지침에 따라 _/apps/cq/config/rewriter/default/generator-htmlparser_를 만들려고했으나 작동하지 않았습니다. –

+0

답변을 업데이트했습니다. –

+0

다시 한번 감사드립니다, @ 토 메크. 나는'jcr : content'를 포함하는 URL의 재 작성에 관한 후속 질문을 가지고 있습니다. 참조 : http://stackoverflow.com/questions/26220078/sling-mapping-rewrite-rules-do-not-rewrite-jcrcontent-paths –