gpt4 book ai didi

url-rewriting - Sling 映射是否可以限制为带有主机 header 的请求

转载 作者:行者123 更新时间:2023-12-02 01:57:57 25 4
gpt4 key购买 nike

我想选择性地申请Sling mappings在 sling:Mapping nodes under/etc/map.publish 中定义,无法获得我想要的行为。

基本上,我希望映射规则仅在主机 header 匹配请求时触发。

我目前正在使用/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>

我想要的是当用户请求时:

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

响应中的 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的机制:

  1. URL 解析器使用 resolver.resolve()负责转换 URL,如 http://app.company.com/page.html进入内容路径,例如。 /content/company/app/en/page.html
  2. 使用 resolver.map() 链接重写器转换内容并缩短所有链接的方法 /content/company/app/en/page.html表格 <a> , <img>等到完整的 URL。仅当您没有适当的正则表达式时它才会起作用 sling:match属性(property)。

您可以使用域名来映射/解析内容,例如。创建 multidomain environment , 所以 http://app.company.com/page.html将命中一个资源和http://app.company2.com/page.html会撞到另一个。

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

关于url-rewriting - Sling 映射是否可以限制为带有主机 header 的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18845841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com