5

我已经阅读了半打关于在 Sitecore 中将空格重写为更友好的东西的指南,但它们都依赖于 Sitecore 的<encodeNameReplacements/>元素,这也反转了需要“-”作为名称的非法字符的替换。

这样做的问题是我们应用程序的 url 在主机名中有一个“-”。Sitecore 将其重写为 404。

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

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

4

2 回答 2

2

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

我通常认为这样做是个坏主意,宁愿让我的内容编辑器确定其内容的确切网址。

但是,如果您绝对需要将此作为一项规则来实现,那么其中一种解决方案是实现一个自定义处理程序来更改您的真实项目名称,同时将项目显示名称保留为其原始形式。

希望这可以帮助。

于 2013-04-25T23:28:45.767 回答
2

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

我刚刚浏览了一下Sitecore.Links.LinkProviderSitecore.KernelBuildItemUrl方法仅替换encodeNameReplacementsURL 路径部分的字符,因此它应该不理会您的主机名。

我希望同样的事情会发生逆转,并且Sitecore.Pipelines.HttpRequest.SiteResolver通过将请求的 Uri 与定义的站点匹配来解决查看 SiteContext 的问题。再往下,该过程会Sitecore.Pipelines.HttpRequest.ItemResolver解码项目 URL,但在此阶段已经解析了站点。

我想你已经hostName在元素上设置了属性<site>?您是否也尝试过设置targetHostName属性?您是否尝试过设置多个主机名,我不希望它与空格一起使用,但如果您说的是真的,值得一试:

<site name="website" hostName="my-site.com|my site.com"  ... />

我尝试在我的本地计算机上复制您的问题,但它对我来说按预期工作......除非您使用非常奇怪的字符集,否则在我看来这仍然是编码名称的最佳方式。

于 2013-04-25T23:29:03.260 回答