Umbraco - 错误此文档已发布,但其URL将与内容发生冲突(更改主节点URL)

时间:2017-09-07 09:18:06

标签: c# asp.net-mvc umbraco umbraco7

尝试将主节点映射到umbraco中的'/'路由时遇到上述问题。 我一直在关注“混合框架”包中使用的方法

Hybrid Framework for Umbraco v7 Best Practises

我所拥有的结构如下(网站位于树的根目录中)

Website node
     |
     - Home node
     |
     - Other nodes

我创建了一个主网址提供程序,它返回正确的网址,如下所示;

public string GetUrl(UmbracoContext umbracoContext, int id, Uri current, UrlProviderMode mode)
{
    var content = umbracoContext.ContentCache.GetById(id);
    if (content != null && content.DocumentTypeAlias.ToLower() == "home" && content.Parent != null)
    {
        //The home node will have / instead of /home/.
        return content.Parent.Url;
    }
    return null;
}

当浏览到主节点(在后台办公室)时,我检查项目网址的属性并获得以下错误;

  

此文档已发布,但其网址将与内容/网站(id = 1083)

发生冲突

我已经从混合框架到字母的方法,我不知道我哪里出错了。

我也检查了这个博客;

urlprovider and contentfinder

我已将网站节点上的UmbracoInternalRedirectId属性设置为指向主节点。

仍然没有我能辨认的线索。有人可以帮忙吗?非常感谢

编辑:

我仍然想要深究这一点!

我已经完成了其他人建议的配置文件,这没有用。

或许更简洁地说明我的观点我用香草umbraco安装复制了错误并将其上传到github;

https://github.com/Aeptitude/BrokenURLUmbraco

它只是使用sdf文件作为应该包含的数据库。

根网站节点和其下的主节点。有一个umbracointernalredirectid指向下面的主节点。 HomeUrlProvider的设置如我原帖中所示。 如果有人能抓住这个并帮助我,那就太棒了。 用户名为admin,密码为password11

非常感谢。

3 个答案:

答案 0 :(得分:5)

您还可以在 web.config 中启用 umbracoHideTopLevelNodeFromPath 属性,以生成树中所有级别的路径。

如果您希望将域保留在生成的网址中,可以使用 umbracoSettings.config 文件中的 useDomainPrefixes 设置启用它。

正如在其他答案中所描述的那样 - 使用您的自定义URL提供程序,您需要确保只有一个节点将接收相同的URL - 当涉及到默认的Umbraco行为时,上述设置完全涵盖了什么。

答案 1 :(得分:3)

要解决您的问题,请将umbracoHideTopLevelNodeFromPath应用密钥设置更改为true:

<add key="umbracoHideTopLevelNodeFromPath" value="true" />

还要确保将useDomainPrefixes更改为true。在/Config/umbracoSettings.config文件中,

<useDomainPrefixes>true</useDomainPrefixes>

然后,请确保re-publish all nodes affected。 然后你的问题就解决了

答案 2 :(得分:1)

这是因为您为主节点提供了与URL提供程序中父节点相同的URL,这导致两个节点具有相同的URL。

要执行您想要的操作,请将WEBSITE Node作为主页,并在其下方放置其他节点。无需自定义URL提供程序,例如

Website/Home
    - About Us
    - Contact Us
    - Etc

这样主页将位于/ URL上,其他所有内容都位于其下方。