Sitecore-将URL中的“_”重写为“-”,但转到404 [英] Sitecore - rewrite “_” to “-” in urls but going to 404

查看:13
本文介绍了Sitecore-将URL中的“_”重写为“-”,但转到404的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是Sitecore 7.5,并替换了两项

<replace mode="on" find=" " replaceWith="-" />(Space with hyphen) 
<replace mode="on" find="_" replaceWith="-" />(underscore with hyphen) 

用连字符(-)替换空格("")可以正常工作,但是在使用下划线(_)的情况下,它会更改为连字符(-),但会重定向到404,您有什么想法吗?

我们可以通过事件处理程序管理此问题,但不希望那样做。

推荐答案

我在another answer上评论说,问题是在解析项目时,传入应用了反向替换。因为您有两个都映射到"-"的替换,所以在传入时它失败了,因为它最初试图用空格替换"-",但是其中一些连字符应该加下划线,但是它不知道应该是哪一个。

例如,给定路径:/path to some/item_url,则生成的url为/path-to-some/item-url

在传入时,将回复反向替换,Sitecore现在正在查找不存在的/path to some/item url,因此抛出404。由于"_"(下划线)替换为"-"(连字符),因此传入时,"-"(连字符)替换为""(空格)。由于没有可替换的连字符,因此无法将其替换为下划线。

查看Sitecore.Pipelines.HttpRequest.ItemResolver, Sitecore.Kernel,您将看到对应用EncodeNameReplacements的MainUtil.DecodeName(args.Url.ItemPath)的调用。

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

这篇关于Sitecore-将URL中的“_”重写为“-”,但转到404的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆