Url rewriting 可以将Sling映射限制为具有主机头的请求吗

Url rewriting 可以将Sling映射限制为具有主机头的请求吗,url-rewriting,aem,sling,Url Rewriting,Aem,Sling,我想有选择地应用/etc/map.publish下sling:Mapping节点中定义的,但无法获得我想要的行为 本质上,我希望映射规则仅在主机头与请求匹配时触发 我目前正在使用/etc/map.publish下的sling:Mapping节点将资源路径映射到响应中的短URL 因此,在/etc/map.publish/http/myapp下,我将有以下节点: <jcr:root ...> jcr:primaryType="sling:Mapping" sling:in

我想有选择地应用/etc/map.publish下sling:Mapping节点中定义的,但无法获得我想要的行为

本质上,我希望映射规则仅在主机头与请求匹配时触发

我目前正在使用/etc/map.publish下的sling:Mapping节点将资源路径映射到响应中的短URL

因此,在
/etc/map.publish/http/myapp
下,我将有以下节点:

<jcr:root ...>
    jcr:primaryType="sling:Mapping"
    sling:internalRedirect="/content/company/app/en"
    sling:match="app.company.com
</jcr:root>
响应中的URL(映射时)将以以下形式返回:

http://app.company.com/page.html
入站和出站URL之间存在这种差异的原因是,我使用Apache为不同的设备类型重写URL

但是,当具有不同主机标头的请求到达时,例如:

http://localhost:4502/content/company/app/en/page.html
我不希望URL按照该规则进行映射。现在,它正被映射到

http://app.company.com/page.html

似乎映射是严格地使用主机/端口解析资源的。然后,在输出期间映射URL时,会找到并使用“最佳匹配”。如果可能,我希望map()的行为与resolve()类似。

基于
/etc/map
,有两种机制:

  • URL解析器使用
    resolver.resolve()
    负责像
    http://app.company.com/page.html
    进入内容路径,例如
    /content/company/app/en/page.html
  • 链接重写器,使用
    resolver.map()
    方法转换内容并缩短
    /content/company/app/en/page.html
    表单中的所有链接,因此
    http://app.company.com/page.html
    将命中一个资源并
    http://app.company2.com/page.html
    将击中另一个


    但是,您不能根据当前请求主机禁用或启用链接重写器。例如,如果如上配置映射,则
    /content/company/app/en/page.html
    内容路径将始终缩短为
    http://app.company.com/page.html
    ,无论您的请求中有什么主机头。

    如果您想确保入站请求得到解决,只需向其添加第二个映射即可

    您的映射如下所示:

    <jcr:root ...>
        jcr:primaryType="sling:Mapping"
        sling:internalRedirect="[/content/company/app/en,/content,/]"
        sling:match="app.company.com
    </jcr:root>
    
    
    jcr:primaryType=“sling:Mapping”
    sling:internalRedirect=“[/content/company/app/en,/content,/]”
    sling:match=“app.company.com
    

    出站映射,s.a.resolver.map(),将使用第一个应用规则。

    可以定义许多映射。您知道链接重写器是否只使用它找到的第一个映射和匹配路径吗?我不确定在这种情况下将采用哪一个映射。但是,我认为每个内容分支都应该有一组单独的映射,它们不应该重叠,因此我们没有“为了担心秩序,”托梅克和迪法,你能看看我的房间吗
    <jcr:root ...>
        jcr:primaryType="sling:Mapping"
        sling:internalRedirect="[/content/company/app/en,/content,/]"
        sling:match="app.company.com
    </jcr:root>