Url rewriting 如何重写或缩短Sitecore URL

Url rewriting 如何重写或缩短Sitecore URL,url-rewriting,sitecore,sitecore7,Url Rewriting,Sitecore,Sitecore7,我有Sitecore带有URL的网站 但是我想缩短URL,就像 . 知道如何从URL中删除我们的度假村吗 请来自Sitecore社区的任何人帮助我 谢谢我想到的第一个答案是使用自定义链接提供程序(在站点上生成url)和自定义项目解析程序(在出现缩短url时解析项目) 创建您自己的类MyLinkProvider继承自Sitecore.Links.LinkProvider并重写GetItemUrl方法。如果url包含/our resorts/,请删除our resorts。当然,这假设您没有名为o

我有Sitecore带有URL的网站 但是我想缩短URL,就像 . 知道如何从URL中删除我们的度假村吗

请来自Sitecore社区的任何人帮助我


谢谢

我想到的第一个答案是使用自定义
链接提供程序
(在站点上生成url)和自定义
项目解析程序
(在出现缩短url时解析项目)

  • 创建您自己的类
    MyLinkProvider
    继承自
    Sitecore.Links.LinkProvider
    并重写
    GetItemUrl
    方法。如果url包含
    /our resorts/
    ,请删除
    our resorts
    。当然,这假设您没有名为
    our resorts
    的项目,在链接生成中不应忽略这些项目。将Sitecore.config standard
    LinkProvider
    中的替换为新的
  • 创建继承自
    HttpRequestProcessor
    myitemsolver
    类,并将其直接添加到
    管道的
    itemsolver
    之后。新项目解析程序的代码:
  • 公共类项目解析器:HttpRequestProcessor
    {
    公共覆盖无效进程(HttpRequestArgs args)
    {
    if(Context.Item!=null | | Context.Database==null | | args.Url.ItemPath.Length==0)
    返回;
    string path=“/our resorts”+MainUtil.DecodeName(args.Url.ItemPath);
    Context.Item=args.GetItem(路径);
    }
    }
    

    我还没有编译或测试代码,所以您需要自己测试它。如果您还有任何问题,请在下面发布。

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

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


    是否需要在站点树中添加度假村。如果你真的需要缩短这个,但需要我们的度假村,尝试一个abc是我的出发点,我在我们的度假村项目下有很多度假村,所以为了搜索引擎优化的目的,主要要求是在没有我们的度假村的情况下生成url,你可能需要重定向。也许是这个。为了保持它的seo友好,请参阅这一个关于为您的网站重写规则的指南,可以在@AndrewScottEvans找到,我不能在我的情况下同时使用这两个指南。因为我在我们的resorts下有很多页面,所以通过这种方法,我必须手动编写每个重定向。但是我想要一些通用的东西……作为对上述答案的补充,这里有一篇来自John West的有用的博客文章,其中谈到了创建自定义链接提供程序。另一篇很棒的补充文章是Alistair Deneys关于从URL中删除项目存储桶路径的博客文章@Maras,谢谢你的帮助,我在我的解决方案中使用了它,它正在工作。但我只能在我必须从URL中删除我们的resorts时使用它,因为我们在Item resolver中硬编码了值,如果我有另一个场景,我必须从URL中删除任何单词以获得理想的URL。在这种情况下我应该使用什么。一个选项是在基本页面模板“隐藏在url中”上添加一个复选框,该复选框将在从
    LinkManager
    生成url时被选中。类似于
    itemsolver
    中,您可以检查任何具有隐藏URL的项是否包含与请求匹配的子项。你应该记住,如果你有太多的项目,你的解决方案会变慢,除非你使用一些适当的缓存,例如lucene,根据请求检索项目。Sam,如果你想要可以用作基础的源代码,查看我们的模块:使用“标题”字段而不是项目名称来修改它将相当容易,并且仍然可以正确解析URL。