【问题标题】:Sitecore - rewrite “_” to “-” in urls but going to 404Sitecore - 将 url 中的“_”重写为“-”但转到 404
【发布时间】:2015-06-23 13:57:02
【问题描述】:

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

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

用连字符(-)替换空格(“”)可以正常工作,但在下划线(_)的情况下,它会更改连字符(-)但重定向到 404,知道吗?

我们可以通过事件处理程序来管理它,但不想这样做。

【问题讨论】:

    标签: sitecore


    【解决方案1】:

    我在another answer 上评论说,问题是在解决项目时,传入的应用了反向替换。由于您有 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,您将看到应用了EncodeNameReplacements 的MainUtil.DecodeName(args.Url.ItemPath) 调用。

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

    【讨论】:

    猜你喜欢
    • 2014-12-17
    • 2017-11-05
    • 2013-04-19
    • 2015-02-06
    • 1970-01-01
    • 2010-10-27
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多