重定向到CQ5中某些其他域上的某个错误页面

时间:2016-03-11 12:38:14

标签: redirect cq5 aem

我想了解如何将网页从一个域重定向到另一个域。例如,我想让网站关闭(www.abc.com)并重定向到不同域的某个错误页面(www.123.com/errorpage)。有没有办法我们可以在etc文件夹而不是virtualhost文件中执行此操作。这两个域都在同一台服务器上。请帮忙。

1 个答案:

答案 0 :(得分:1)

https://sling.apache.org/documentation/the-sling-engine/mappings-for-resource-resolution.html了解吊索映射。

创建所有类型/etc/map/http的路径sling:Folder。然后添加以下两个节点:

abc
    jcr:resourceType="sling:Mapping"
    sling:match="abc.com(/.*)"
    sling:redirect="http://www.123.com/errorpage.html"

abc80
    jcr:resourceType="sling:Mapping"
    sling:match="abc.com.80(/.*)"
    sling:redirect="http://www.123.com/errorpage.html"  

您可以在这里根据您的端口进行任何添加或更改,以及如何处理" www"重定向。

Sling mappings支持正则表达式组。如果sling:match设置为abc.com.80,则生成的重定向最终会显示为http://www.123.com/errorpage.html/content/sitename/page.html,这显然是不正确的。我们可以将sling:redirect属性更新为http://www.123.com/errorpage.html?from=$1,以便使用捕获的组。但是,在这个例子中,我只是丢弃了捕获的组。无论哪种方式,获得所需重定向的技巧是设置捕获组。

您可以使用以下设置在本地作者实例上进行测试:

localhost4502
    jcr:resourceType="sling:Mapping"
    sling:match="localhost.4502(/.*)"
    sling:redirect="http://www.google.com/error.html"

sling:redirect默认为临时302重定向。如果您愿意,可以将sling:status设置为300,301,303或307.如果您不需要更改地址栏,则可以使用sling:internalRedirect,它更像Apache内部重写而不是外部重定向。有关更多选项,请参阅文档。