如果absolute_url与路径不匹配,plone.app.linkintegrity无法正常工作?

时间:2015-09-17 18:50:05

标签: plone archetypes

  • Plone 4.1.6
  • plone.app.linkintegrity 1.4.5

我在删除内容时没有收到链接完整性警告,尽管在编辑CP中打开了该选项,我可以追溯到plone.app.linkintegrity应该创建的内容" isReferencing" reference_catalog中的引用。它没有被创建,这导致链接完整性没有捕获任何东西。

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

我的网址类似http://myurl.com/portals/maryland/page-two,门户网站是/ maryland。注意额外的" /门户" url路径中与任何Zope对象不对应的组件。这似乎是问题的症结所在。

当调用plone.app.linkintegrity.handlers.findObject时," base"的值就像"< ATDocument at / maryland / page-two>"和"路径"的价值是" /门户/马里兰/第一页"。 " portal_path"虽然使用了Zope物理路径,但却得到了" / maryland /"。那么"路径"并没有开始" portal_path"因此它将首先尝试遍历不存在的"门户网站"并且它将返回None对象。

我相信这一行

portal_path = '/'.join(obj.getPhysicalPath()) + '/'

应该是

portal_path = urlsplit(obj.absolute_url()).path + '/'

这似乎对我有用。创建引用并且链接完整性起作用。我不愿意将此报告为错误,因为我不确定我的假设是否正确。在最新的github版本中,该行仍然存在,我怀疑这样的错误可能会持续这么长时间。如果有人可以通过确认这看起来像一个错误来检查我的理智,或指出我的错误,那将不胜感激。

Apache配置片段:

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

0 个答案:

没有答案