我有两个指向不同物理文件夹的IIS站点。这是为了能够区分web.config以及用于站点的文件和程序集 数据库设置为指向两个站点的同一实例 在web.config中配置为从不同的部分开始 结构是这样的:
/ Sitecore的/内容/家/默认
/ Sitecore的/内容/家庭/企业内部网
到目前为止一切顺利。
现在,问题是我可以通过输入完整路径来检索不属于实际网站的内容。即
http://www.default.com/sitecore/content/home/intranet.aspx
< - 这不应该被允许,因为www.default.com
配置为/sitecore/content/home/default
为root。
是否有任何内置机制可以禁止此操作,或者我必须将itemresolver子类化为“跨站点” - 请求非法。
答案 0 :(得分:2)
这与Sitecore如何解析项目有关,我已经为每个项目找到了3个不同的URL。例如,我说我有以下结构:
-sitecore
-content
-home
-page1
我可以通过以下方式访问page1:
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。调用此过程时,它可以创建属于组的虚拟用户,该组限制对用户请求的站点的访问。
有一些代码here向您展示如何创建虚拟用户:
管道上的和here:
希望这会有所帮助: - )
答案 1 :(得分:0)
如果Intranet项目(及以下)受Sitecore安全保护,那么它应该是问题,也不可能访问:)
如果您无法使用安全性处理它,那么我会使用ItemResolver。
干杯