【问题标题】:how to rewrite or shorten the Sitecore URL如何重写或缩短 Sitecore URL
【发布时间】:2013-12-15 06:34:03
【问题描述】:

我有带有 URL 的 Sitecore 网站 http://www.abc.com/our-resorts/resort1/career.aspx 但我想缩短网址 http://www.abc.com/resort1/career.aspx 。知道如何从 URL 中删除 our-resorts

请 Sitecore 社区的任何人帮助我....

谢谢

【问题讨论】:

  • 是否有必要在站点树中添加度假村。如果您确实需要缩短此时间但需要我们的度假村,请尝试tiny url.
  • abc 是我的起点,我在 our-resorts 项目下有很多度假村,所以出于 seo 的目的,主要要求是在没有 our-resorts 的情况下生成 url
  • 您可能需要重定向。也许这个post helps.。为了保持对 seo 友好,请参阅guide.
  • 可以在here.找到更多关于网站重写规则的指南
  • @AndrewScottEvans,我不能同时使用这两个指南。因为我在 our-resorts 下有很多页面,所以通过这种方法,我必须手动编写每个重定向。但我想要一些通用的......

标签: url-rewriting sitecore sitecore7


【解决方案1】:

我想到的第一个答案是使用自定义LinkProvider(在网站上生成网址)和自定义ItemResolver(在出现缩短的网址时解析项目)。

  1. 创建您自己的类MyLinkProvider 继承自Sitecore.Links.LinkProvider 并覆盖GetItemUrl 方法。如果 url 包含 /our-resorts/,则删除 our-resorts。当然,这假设您没有名称为 our-resorts 的项目,在链接生成中不应省略这些项目。将 Sitecore.config 标准中的 LinkProvider 替换为新的。
  2. 创建继承自HttpRequestProcessorMyItemResolver 类,并将其直接添加到<httpRequestBegin> 管道中ItemResolver 之后。新项目解析器的代码:
public class ItemResolver : HttpRequestProcessor
{
    public override void Process(HttpRequestArgs args)
    {
        if (Context.Item != null || Context.Database == null || args.Url.ItemPath.Length == 0)
            return;
        string path = "/our-resorts" + MainUtil.DecodeName(args.Url.ItemPath);
        Context.Item =  args.GetItem(path);
    }
}

我没有编译或测试过代码,所以你需要自己测试一下。如果您还有其他问题,请在下方发布。

【讨论】:

  • 作为上述答案的补充,这是 John West 的一篇有用的博客文章,其中讨论了创建自定义链接提供程序sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/…
  • 另一个很棒的补充是 Alistair Deneys 的一篇关于从 URL 中删除项目存储桶路径的博客文章。 adeneys.wordpress.com/2013/07/19/item-buckets-and-urls
  • @Maras ,感谢您的帮助,我在我的解决方案中使用了它并且它正在工作。但是我只能在我必须从 URL 中删除 our-resorts 时使用它,因为我们在 Item resolver 中对值进行了硬编码,如果我有另一种情况,我必须从 URL 中删除任何单词以获得理想的 URL。在这种情况下我应该使用什么。
  • 一个选项是在基本页面模板“隐藏在 url”上添加一个复选框,在从 LinkManager 生成 url 时将检查该复选框。在ItemResolver 中类似,您可以检查是否有任何具有隐藏 url 的项目包含与请求匹配的子项。你应该记住,如果你有太多的项目,你的解决方案会变慢,除非你使用一些适当的缓存,例如lucene 用于根据请求检索项目。
  • Sam,如果您想要可以用作基础的源代码,请查看我们的模块:partechit.nl/nl/blog/2013/05/sitecore-seo-friendly-url-module 使用“标题”字段而不是项目名称,仍然可以正确解析 URL。
【解决方案2】:

如果不是太多页面,您可以在 Sitecore 中使用 URL Aliases。
必须为每个项目手动设置。

这样您就可以告诉 Sitecore,例如,/our-resorts/resort1/career 可以通过 URL /resort1/career 访问

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    相关资源
    最近更新 更多