我已经阅读了六个关于将空格重写为Sitecore中更友好的内容的指南,但所有这些指南都依赖于Sitecore的<encodeNameReplacements/>
元素,这也反转了替换要求“ - ”成为名称的非法字符
这个问题是我们的应用程序的url在主机名中有一个“ - ”。 Sitecore重写了这个结果,产生了404.
有没有人有关于如何在Sitecore中重写此网址而不依赖<encodeNameReplacements
仍然允许“ - ”作为合法项目名称字符的想法?我们目前最好的想法是使用比简单的“ - ”更复杂的东西,例如“ - ”或“_”。这不是一个好主意,所以我很感激你们对此事的任何见解。
编辑:我们正在使用Sitecore 6.5运行多站点设置
答案 0 :(得分:2)
因此,如果我假设正确,您希望将项目名称中的空格替换为其他一些SEO友好字符。无论您配置何种替换,您都需要在等式的两边应用变换(双关语)。所以' - '或'_'必须成为非法的项目名称字符。
我一般认为这样做是个坏主意,而是希望我的内容编辑确定其内容的确切网址。
但是如果您绝对需要将其作为规则实施,那么其中一个解决方案是implement a custom handler to change your real item name,同时将项目显示名称保留为原始形式。
希望这有帮助。
答案 1 :(得分:2)
您使用的是Sitecore的哪个版本和版本?
我刚看了Sitecore.Links.LinkProvider
中的Sitecore.Kernel
,BuildItemUrl
方法只替换了网址路径部分的字符encodeNameReplacements
,所以它应该留下你的主持人。
我希望相同的情况发生逆转,并且通过将请求的Uri与定义的站点匹配来查看Sitecore.Pipelines.HttpRequest.SiteResolver
SiteContext。在此过程中Sitecore.Pipelines.HttpRequest.ItemResolver
会对项目网址进行解码,但网站已在此阶段得到解决。
我认为您已在hostName
元素上设置了<site>
属性?您是否尝试过设置targetHostName
属性?您是否尝试过设置多个hostNames,我不认为它可以使用空格,但如果你说的是真的,那么值得一试:
<site name="website" hostName="my-site.com|my site.com" ... />
我尝试在我的本地计算机上复制你的问题,但它对我来说是有效的...除非你使用非常奇怪的字符集,否则这仍然是我认为编码名称的最好方法。