Sitecore - 在网址中重写“”到“ - ”但仍然允许短划线作为合法项目名称

时间:2013-04-25 21:12:28

标签: url-rewriting seo sitecore sitecore6

我已经阅读了六个关于将空格重写为Sitecore中更友好的内容的指南,但所有这些指南都依赖于Sitecore的<encodeNameReplacements/>元素,这也反转了替换要求“ - ”成为名称的非法字符

这个问题是我们的应用程序的url在主机名中有一个“ - ”。 Sitecore重写了这个结果,产生了404.

有没有人有关于如何在Sitecore中重写此网址而不依赖<encodeNameReplacements仍然允许“ - ”作为合法项目名称字符的想法?我们目前最好的想法是使用比简单的“ - ”更复杂的东西,例如“ - ”或“_”。这不是一个好主意,所以我很感激你们对此事的任何见解。

编辑:我们正在使用Sitecore 6.5运行多站点设置

2 个答案:

答案 0 :(得分:2)

因此,如果我假设正确,您希望将项目名称中的空格替换为其他一些SEO友好字符。无论您配置何种替换,您都需要在等式的两边应用变换(双关语)。所以' - '或'_'必须成为非法的项目名称字符。

我一般认为这样做是个坏主意,而是希望我的内容编辑确定其内容的确切网址。

但是如果您绝对需要将其作为规则实施,那么其中一个解决方案是implement a custom handler to change your real item name,同时将项目显示名称保留为原始形式。

希望这有帮助。

答案 1 :(得分:2)

您使用的是Sitecore的哪个版本和版本?

我刚看了Sitecore.Links.LinkProvider中的Sitecore.KernelBuildItemUrl方法只替换了网址路径部分的字符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"  ... />

我尝试在我的本地计算机上复制你的问题,但它对我来说是有效的...除非你使用非常奇怪的字符集,否则这仍然是我认为编码名称的最好方法。