使用 /?sc_item={guid} URL 和错误 404

Using the/?sc_item={guid} URL and error 404's

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

无缝重定向用户

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

有解决办法吗?

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

我已经为拥有大型遗留网站并逐渐将内容过渡到 Sitecore 的客户实施了这样的解决方案。反向代理允许我从 end-users 中屏蔽它。网址与往常一样。

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

我写了一篇博客 post 更明确地介绍了这个想法:http://sitecoreblog.patrickperrone.com/2015/05/create-reverse-proxy-controlled-by.html

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

您基本上将从查询字符串中获取 Guid,通过 ID 获取项目,return 如果找到项目。否则,记录 url 和 return null