【问题标题】:ColdFusion - Web Server - Directory Serving - IISColdFusion - Web 服务器 - 目录服务 - IIS
【发布时间】:2020-07-24 16:57:19
【问题描述】:

不确定这是在根目录中的 ColdFusion Application.cfm 中还是通过 IIS 网络服务器控制的。

但我正在尝试使用相同的 ColdFusion 代码从 1 个根网站设置多个子站点,然后通过嗅探 URL 来设置不同的数据源,即:www.root.com/bob 并使用 cgi.http_host。

所以我可以使用相同的代码和不同的 URL,例如:

      www.root.com
      www.root1.com
      www.root2.com

但是我每次都需要在网络服务器中设置一个单独的站点(这很好并且可以理解)。

但我想在同一个根网站但在一个子目录上运行相同的代码。 所以我想跑:

      www.root.com/test
      www.root.com/test2
      www.root.com/test3
      www.root.com/newsignup

然后所有这些子目录都可以运行相同的代码,而无需在 IIS 中设置多个网站。

使用 ColdFusion 可以轻松做到这一点吗?还是都是 IIS 映射?

【问题讨论】:

  • 关于让数据源依赖于 cgi 变量的部分可以在您的应用程序文件中轻松完成。让每个站点运行完全相同的代码听起来很棘手,但您似乎已经弄清楚了那部分。

标签: iis coldfusion iis-8 coldfusion-2016


【解决方案1】:

您的代码位于类似的地方

E:\path\to\wwwroot

在 IIS 中,您有一个站点设置,该文件夹作为 Web 根目录。该网站有一个主域

www.someDomain.com

那么你想在不同的域下提供相同的代码:

在 IIS 中,您必须将这些设置为您网站的域别名。在 IIS 管理器中查找“绑定”。您也可以通过编辑将在您的 Web 根目录中创建的 website.config 文件来执行此操作。

如果您需要为每个域加载不同的设置,则必须更新您的应用程序。我通常设置将这些域列表映射到它们的设置的数据库表。这样您就可以通过cgi.http_host 查找和缓存设置。

<cfif !structKeyExists(application.settings, cgi.http_host)>
    <!--- Look up settings, then cache them here. --->
    <cfset application.settings[cgi.http_host] = ...>
</cfif>

现在您可以在同一代码库中引用每个域的设置。

【讨论】:

  • 它是同一个域但子目录。所以.. 是的 www.somedomain.com 是主要代码。但同样的代码在.. www.somedomain/bob www.somedomain/Carl www.somedomain.com/Fred
  • 然后在 IIS 中使用 URL 重写。所以不要创建那些子目录,而是为每个指向根目录的子目录添加一个重写规则,并传递一个参数,您可以在 CF 代码中检查该参数以查看最初请求的路径。
猜你喜欢
  • 2017-06-28
  • 1970-01-01
  • 2017-12-29
  • 2012-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多