一些问题上下文
目前,我正在 HippoCMS 支持的网站中开发一些重定向逻辑,为旧网站上的 URL 创建 301 重定向到新网站上的相应页面。
对于旧网站,我只能访问基于“URL 标题”的索引。无法进一步访问。新网站中的 Hippo 文档使用与旧网站完全相同的标题创建。所以理论上应该可以匹配。
开发方法的原因是有超过 7000 个页面需要重定向。手动执行此操作(使用 UrlRewriter 插件)意味着 40 多个小时的大脑麻木工作。
目前的发展
我创建了一个 Groovy 更新脚本,它应该;
- 遍历所有节点
- 对于内容节点,将文档标题与旧索引匹配
- 存在匹配项时,检索旧 URL
- 问题出在此处:检索新 URL
- 该文档在站点地图中有一个可解析的路径
- 在urlrewriter 插件存储库部分中存储为新节点
编码
import org.hippoecm.hst.configuration.hosting.Mount;
import org.hippoecm.hst.container.RequestContextProvider;
import org.hippoecm.hst.core.linking.HstLink;
import org.hippoecm.hst.core.linking.HstLinkCreator;
import org.hippoecm.hst.core.request.HstRequestContext;
class UpdaterTemplate extends BaseNodeUpdateVisitor {
boolean doUpdate(Node node) {
def HstRequestContext = RequestContextProvider.get();
def mount = HstRequestContext.getMount();
def linkCreator= temp.getHstLinkCreator();
def link = linkCreator.create(node.path, mount);
def url = link.toUrlForm(HstRequestContext);
// Output the url
log.debug(url);
}
}
该代码基于关于重写链接的河马示例页面
问题
我似乎无法检索新网站的 URL。所有其他步骤都工作正常,我在新站点上有文档 JCR 节点。我只是无法生成 URL。
我得到的第一个错误表明 CMS 无法解析某些 HST 类。
ERROR Cannot run updater: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
updater: 8: unable to resolve class org.hippoecm.hst.container.RequestContextProvider
@ line 8, column 1.
import org.hippoecm.hst.container.RequestContextProvider
^
1 error
这很容易通过更新我的 pom.xml 来解决。仅适用于开发期间。之后会重置。
然后出现了真正的问题,HstRequestContext 为空。
ERROR Updating /content/documents/XYZXYZ failed - java.lang.NullPointerException: Cannot invoke method getMount() on null object
当然这是有道理的,因为我们没有真实的上下文。但是仍然......如果没有完整站点地图逻辑的副本,我应该如何生成 URL。
我是在一条完全虚假的道路上吗?还是我错过了什么?请帮帮我。