Sitecore 多个网站和制作“;跨站点“;请求非法

Sitecore 多个网站和制作“;跨站点“;请求非法,sitecore,multiple-sites,Sitecore,Multiple Sites,我有两个IIS站点指向不同的物理文件夹。这是为了能够区分web.config以及用于站点的文件和程序集 数据库设置为指向两个站点的同一实例 在web.config中,配置为从不同的部分开始 结构是这样的: /sitecore/content/home/default /sitecore/content/home/intranet 到目前为止还不错 现在,问题是我能够通过输入完整的路径来检索不属于实际站点的内容。即 http://www.default.com/sitecore/content

我有两个IIS站点指向不同的物理文件夹。这是为了能够区分web.config以及用于站点的文件和程序集 数据库设置为指向两个站点的同一实例 在web.config中,配置为从不同的部分开始 结构是这样的:

  • /sitecore/content/home/default

  • /sitecore/content/home/intranet

到目前为止还不错

现在,问题是我能够通过输入完整的路径来检索不属于实际站点的内容。即

http://www.default.com/sitecore/content/home/intranet.aspx
如果intranet项目(及以下)受Sitecore安全保护,则不会出现问题,也不可能访问:)

如果你不能安全地处理它,那么我会选择ItemResolver


干杯

这与Sitecore解析项目的方式有关,我为每个项目找到了3个不同的URL。例如,假设我有以下结构:

-sitecore
  -content
    -home
      -page1
我可以通过以下方式访问第1页:

  • http://mysite/sitecore/content/home/page1.aspx
  • http://mysite/page1.aspx
  • http://mysite/home/page1.aspx
然而,了解这一点无助于解决你的问题。我能建议的最佳解决方案是使用安全性。但是,如果两个站点都需要匿名访问,问题是如何控制这一点

我想,既然您有两个独立的web.config,那么您也必须分离Sitecore配置部分。因此,我们可以创建一个管道进程,作为http请求开始管道的一部分运行(在web.config中为/configuration/sitecore/pipelines/httpRequestBegin),为每个站点创建一个管道进程并更新相关的web.config。调用此进程时,可能会创建一个虚拟用户,该用户属于一个组,该组限制对用户请求的站点的访问

有一些代码向您展示了如何创建虚拟用户:

在管道上:

希望这有帮助:-)