尝试将主节点映射到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)
发生冲突
我已经从混合框架到字母的方法,我不知道我哪里出错了。
我也检查了这个博客;
我已将网站节点上的UmbracoInternalRedirectId属性设置为指向主节点。
仍然没有我能辨认的线索。有人可以帮忙吗?非常感谢
编辑:
我仍然想要深究这一点!
我已经完成了其他人建议的配置文件,这没有用。
或许更简洁地说明我的观点我用香草umbraco安装复制了错误并将其上传到github;
https://github.com/Aeptitude/BrokenURLUmbraco
它只是使用sdf文件作为应该包含的数据库。
根网站节点和其下的主节点。有一个umbracointernalredirectid指向下面的主节点。 HomeUrlProvider的设置如我原帖中所示。 如果有人能抓住这个并帮助我,那就太棒了。 用户名为admin,密码为password11
非常感谢。
答案 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上,其他所有内容都位于其下方。