Sitecore 使用/?sc_item={guid}URL和错误404';s

Sitecore 使用/?sc_item={guid}URL和错误404';s,sitecore,sitecore7,sitecore-dms,Sitecore,Sitecore7,Sitecore Dms,关于SC7.5的一个快速问题-我们有一个大型的遗留系统,它将引导用户访问sitecore内容。我们知道GUID,希望通过URL www.mysite.com/?sc_item={GUID}无缝重定向用户 我们还希望能够检查内容是否仍然存在,如果没有,将产生一个错误404,这将允许我们(和其他人)通过404报告清理我们的链接 是否有解决方案?< P>一种方法,你可以考虑使用反向代理。您可以在IIS上安装应用程序请求路由模块。这将允许您检查和重写ARR站点的传入请求,并将它们转发到一个或多个后端服务

关于SC7.5的一个快速问题-我们有一个大型的遗留系统,它将引导用户访问sitecore内容。我们知道GUID,希望通过URL www.mysite.com/?sc_item={GUID}无缝重定向用户

我们还希望能够检查内容是否仍然存在,如果没有,将产生一个错误404,这将允许我们(和其他人)通过404报告清理我们的链接


是否有解决方案?

< P>一种方法,你可以考虑使用反向代理。您可以在IIS上安装应用程序请求路由模块。这将允许您检查和重写ARR站点的传入请求,并将它们转发到一个或多个后端服务器。您还可以重写来自这些后端服务器的响应(调整页面上的相对链接,修复标题中的响应位置,等等)

我已经为一个拥有大型遗留网站的客户端实现了类似的解决方案,该客户端正在将内容增量转换到Sitecore。反向代理允许我屏蔽来自最终用户的信息。URL保持不变

真正使这项技术强大的是,您可以为ARR编写自己的重写提供程序。这意味着在ARR运行期间,您可以执行任意代码,而不仅仅是依靠规则来实现所需的效果。我的重写提供程序实际上与Sitecore进行通信,以确定如何处理传入的请求,然后相应地对其进行路由


我写了一篇博文更明确地阐述了这个想法:

您可以替换或添加另一个ItemResolver。如果需要有关如何实现的帮助,请在web.config和该类中查找Sitecore.Pipelines.HttpRequest.ItemResolver


基本上,您将从querystring中获取Guid,按id获取项,并在找到项时返回项。否则,记录url并返回null

Jose和Patrick的两个非常好的答案,根据当地情况,一个可能比另一个好一点。我们使用了Patrick所描述的ARR过程,但是我真的很喜欢Jose解决方案的易部署性。谢谢你们两位