我想了解如何将网页从一个域重定向到另一个域。例如,我想让网站关闭(www.abc.com)并重定向到不同域的某个错误页面(www.123.com/errorpage)。有没有办法我们可以在etc文件夹而不是virtualhost文件中执行此操作。这两个域都在同一台服务器上。请帮忙。
答案 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内部重写而不是外部重定向。有关更多选项,请参阅文档。