如果绝对url不';不匹配路径? 普隆4.1.6 plone.app.linkintegrity 1.4.5

如果绝对url不';不匹配路径? 普隆4.1.6 plone.app.linkintegrity 1.4.5,plone,archetypes,Plone,Archetypes,我在删除内容时没有收到链接完整性警告,尽管在编辑CP时打开了该选项,我可以追溯到plone.app.linkintegrity应该在引用目录中创建“isReference”引用的位置。它没有被创建,这导致链接完整性无法捕获任何内容 尽管使用了“link using UID”,但plone.app.linkintegrity.modifiedArchetype使用的是field.getAccessor(obj)而不是field.getRaw(obj),因此链接已经转换,并在此处显示为完整的解析UR

我在删除内容时没有收到链接完整性警告,尽管在编辑CP时打开了该选项,我可以追溯到plone.app.linkintegrity应该在引用目录中创建“isReference”引用的位置。它没有被创建,这导致链接完整性无法捕获任何内容

尽管使用了“link using UID”,但plone.app.linkintegrity.modifiedArchetype使用的是field.getAccessor(obj)而不是field.getRaw(obj),因此链接已经转换,并在此处显示为完整的解析URL。这是否适用于另一个主题—这只是指出,将通过在URL路径中标识门户根,然后从那里进行遍历来尝试查找对象

我的url类似于,门户路径是/maryland。请注意url路径中的额外“/portals”组件与任何Zope对象都不对应。这似乎是问题的症结所在

调用plone.app.linkintegrity.handlers.findObject时,“base”的值类似于“”,而“path”的值是“/portals/maryland/page one”。“portal_path”使用Zope物理路径,并获得“/maryland/”。所以“路径”不会从“门户路径”开始,所以它将首先尝试遍历到“门户”,而“门户”并不存在,它将不返回任何对象

我相信这句话

portal_path = '/'.join(obj.getPhysicalPath()) + '/'
应该是

portal_path = urlsplit(obj.absolute_url()).path + '/'
这似乎对我有用。创建引用并链接完整性工作。我不确定我的假设是否正确,所以我不敢将此报告为bug。另外,在最新的github版本中,这一行仍然存在,我怀疑这样的bug会持续这么长时间。如果有人能通过确认这看起来像一个bug,或者指出我的错误来检查我的理智,那将不胜感激

Apache配置的代码片段:

RewriteRule ^/portals(/.*|$) http://myinternal_ur.com:9507/VirtualHostBase/https/%{HTTP_HOST}:443/VirtualHostRoot/_vh_portals/$1 [proxy,last]

这个问题可能会得到更好的回答,也许值得一份带有PR和修复的bug报告。据我所知,您的用例应该是修复的。