我想知道crafter(3.0)是否有能力进行网址映射。
例如,要在/site/website/foobar/mycontent/index.xml
之类的给定路径中添加内容,并将其网址设为/news/2017/11/17/my-content
(请注意/
中无法使用的file-name
因为它们在工作室中自动转换为-
。
谢谢,
尼古拉斯
答案 0 :(得分:2)
内置路由器位于我们的路线图()上,但就目前而言,您可以轻松地在蓝图中添加一个路由器:
创建一个Groovy过滤器脚本,拦截所有调用和 检查URL是否与其中一个入站URL匹配。如果是的话,它 将请求转发到相应的出站URL。下面是 这种过滤器的可能代码:
def routingTableItem = siteItemService.getSiteItem("/site/components/system/routing-table.xml")
def routingTable = routingTableItem.urlRoutingTable.item
def currentURL = request.requestURI
def matchedEntry = routingTable.find { entry ->
return currentURL == entry.inboundURL.text
}
if (matchedEntry) {
def inboundURL = matchedEntry.inboundURL.text
def outboundURL = matchedEntry.outboundURL.text
logger.info("Forwarding URL ${inboundURL} to ${outboundURL}")
request.getRequestDispatcher(outboundURL).forward(request, response)
} else {
filterChain.doFilter(request, response)
}