【问题标题】:Sitecore website as a subsite of an existing non-Sitecore websiteSitecore 网站作为现有非 Sitecore 网站的子网站
【发布时间】:2025-11-23 23:55:02
【问题描述】:

我们有两个网站:

  1. 第一个是非 Sitecore 网站(例如 www.non-sitecore-site.com)
  2. 第二个是 Sitecore 网站(例如 www.sitecore-site.com

我的任务是将第二个(基于 Sitecore 的网站)作为第一个网站的子网站,可通过 www.non-sitecore-site.com/sitecore-site 访问。

我尝试在 IIS 中创建一个虚拟文件夹,将其转换为 Web 应用程序并将其设置为基于 Sitecore 的站点文件夹。但是它不起作用,即使我在 Sitecore 配置文件中配置 virtualFolderphysicalFolder 都等于 "/sitecore-site"。

真的可行吗? 感谢任何帮助。

【问题讨论】:

    标签: iis sitecore sitecore8 sitecore-mvc


    【解决方案1】:

    Sitecore 通过httpRequestBegin 管道中的管道进程解析站点。 SiteResolver 根据以下标准设置上下文站点:

    • 主机名
    • 虚拟路径
    • 端口号

    Sitecore 按顺序处理配置 XML 以找到符合上述条件的第一个站点。由于每个站点都定义了hostName 属性,Sitecore 首先检查hostName,然后检查virtualFolder,默认情况下只是“/”。因此,您的第一件事是查看一系列站点定义,以确保将更具体的配置放在顶部,将更通用的配置放在底部。

    要将 Sitecore 站点配置为虚拟文件夹,只需将 virtualFolderphysicalFolder 属性设置为相同的值以匹配您的预期路径 '/sitecore-site',即您的站点配置看起来像:

    <site name="yoursite" hostName="www.non-sitecore-site.com" virtualFolder="/sitecore-site" physicalFolder="/sitecore-site" ...
    

    您无需在 IIS 中创建指向您的 Sitecore 站点的物理文件夹 'sitecore-sit' 或虚拟文件夹 'sitecore-sit'

    【讨论】:

    • 那么这应该如何在 IIS 中进行配置?我已经为 www.non-sitecore-site.com 绑定了一个绑定到基于非 Sitecore 的网站并且与 Sitecore 无关的绑定。如果我为 Sitecore 添加相同的内容,它将无法正常工作。那么该请求将如何到达 Sitecore?
    • 您应该在 IIS 中将 Sitecore 网站配置为专用实例,并将其物理路径指向文件系统中的 Sitecore 文件夹。理想情况下,除了现有的两个站点之外,您还应该配置一个代理站点,并仅为其分配主要的www.non-sitecore-site.com 主机名,然后在其中设置代理重写规则,以根据请求的 URL。如果您共享相同的托管空间,则可以使用本地 IP 和端口在不同站点之间进行代理重定向。