我有网址为http://www.abc.com/our-resorts/resort1/career.aspx的Sitecore网站,
但我想缩短网址,例如
http://www.abc.com/resort1/career.aspx。知道如何从 URL 中删除。our-resorts
请来自 Sitecore 社区的任何人帮助我....
谢谢
我有网址为http://www.abc.com/our-resorts/resort1/career.aspx的Sitecore网站,
但我想缩短网址,例如
http://www.abc.com/resort1/career.aspx。知道如何从 URL 中删除。our-resorts
请来自 Sitecore 社区的任何人帮助我....
谢谢
我想到的第一个答案是使用自定义LinkProvider
(在网站上生成网址)和自定义ItemResolver
(在缩短的网址出现时解析项目)。
MyLinkProvider
,继承Sitecore.Links.LinkProvider
并覆盖GetItemUrl
方法。如果 url 包含/our-resorts/
,请删除our-resorts
。当然,这假设您没有our-resorts
在链接生成中不应省略的名称的项目。用新的替换 Sitecore.config 标准LinkProvider
。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);
}
}
我还没有编译或测试过代码,所以你需要自己测试一下。如果您还有其他问题,请在下方发布。
如果不是太多页面,您可以在 Sitecore 中使用 URL Aliases。
必须为每个项目手动设置它们。
这样您就可以告诉 Sitecore,例如,/our-resorts/resort1/career
可以通过 URL 访问/resort1/career