我正在使用 Sitecore 7.5 并替换了两件事
<replace mode="on" find=" " replaceWith="-" />(Space with hyphen)
<replace mode="on" find="_" replaceWith="-" />(underscore with hyphen)
用连字符(-)替换空格(“”)工作正常,但在下划线(_)的情况下,它在连字符(-)中发生变化,但重定向到404,知道吗?
我们可以通过事件处理程序来管理它,但不想这样做。
我评论过另一个答案 https://stackoverflow.com/a/16226371/661447问题在于,在解决项目时,传入的内容应用了反向替换。由于您有两个替换都映射到“-”,因此在传入时它会失败,因为它最初尝试用空格替换“-”,但其中一些连字符应该是下划线,但它不知道哪个应该是哪个。
例如,给定路径:/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。
您最好首先使用事件处理程序来处理这些问题,这样您就不需要担心任何类型的映射。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)