4

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

在此处输入图像描述

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

谢谢

4

2 回答 2

14

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

  1. 创建您自己的类MyLinkProvider,继承Sitecore.Links.LinkProvider并覆盖GetItemUrl方法。如果 url 包含/our-resorts/,请删除our-resorts。当然,这假设您没有our-resorts在链接生成中不应省略的名称的项目。用新的替换 Sitecore.config 标准LinkProvider
  2. 创建MyItemResolver继承自的类HttpRequestProcessor并将其直接添加到<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);
    }
}

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

于 2013-12-16T08:01:52.817 回答
2

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

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

在此处输入图像描述

于 2013-12-16T09:38:33.157 回答