Sitecore - 在网址中将"_"重写为" - ",但转到404

Gau*_*wal 7 sitecore

我正在使用Sitecore 7.5并替换两件事

<replace mode="on" find=" " replaceWith="-" />(Space with hyphen) 
<replace mode="on" find="_" replaceWith="-" />(underscore with hyphen) 
Run Code Online (Sandbox Code Playgroud)

用hyphne( - )替换空格("")工作正常,但在下划线(_)的情况下,它用连字符( - )改变但重定向到404,任何想法?

我们可以通过Event处理程序来管理它,但不希望这样做.

jam*_*kam 10

我评论了另一个答案,问题是在解析项目时,传入已应用反向替换.由于你有2个替换都映射到" - "然后在传入它失败,因为它最初尝试用空格替换" - ",但这些连字符中的一些应该是下划线但不知道哪个应该是哪个.

例如,给定路径:/path to some/item_url然后生成的URL是/path-to-some/item-url.

在传入时,会回复相反的替换,并且Sitecore现在正在寻找/path to some/item url,这不存在,因此抛出了404.由于"_"(下划线)被替换为" - "(连字符),因此在传入时," - "(连字符)将替换为""(空格).由于没有可供替换的连字符,因此不能用下划线替换.

看一下,Sitecore.Pipelines.HttpRequest.ItemResolver, Sitecore.Kernel您将看到调用MainUtil.DecodeName(args.Url.ItemPath)EncodeNameReplacements的位置.

您最好先使用事件处理程序来处理这些问题,这样您就不必担心任何类型的映射.