ColdFusion 2016:您可以在您的 Web 根目录中创建一个名为 'api' 或 'rest' 的文件夹吗?

ColdFusion 2016: Can you have a folder in your web root named 'api' or 'rest'?

我刚刚安装了 ColdFusion 2016(从 CF10 升级),我注意到每当我尝试访问我的 webroot 中名为 'api' 的文件夹时,我都会收到内部 500 错误。

例如:www.mysite.com/api/

我认为这与新的 ColdFusion API REST 服务有关,所以我创建了另一个名为 'rest' 的目录,执行了相同的测试(www.mysite.com/rest/),又收到一个 500 错误。

查看IIS报错截图:

奇怪的是我没有使用 ColdFusion REST 服务,也没有在 ColdFusion Administrator 中启用它。

我的问题:

您是否允许在您的网络根目录中使用名为 "api" 或 "rest" 的文件夹名称?或者这些是现在保留的文件夹名称?是否有针对特定站点禁用此功能以便我可以使用这些文件夹名称的解决方法?

在 Adob​​e 论坛上看到这个应该可以回答您的问题:

您无法访问 /api/ 或 /rest/ 的原因是这些文件夹存在 cf servlet 映射。

您可以前往 cfinstall/cfusion/wwwroot/WEB-INF/web.xml 删除映射。搜索 api servlet-mapping 并将其注释掉。

除了使用 IIS 重写将流量重定向到另一个文件夹之外,似乎没有其他方法可以针对特定站点执行此操作。这样的事情应该有效(将流量从 /api/ 重定向到 /api2/):

<rule name="Redirect" stopProcessing="true">
     <match url="^api$|^api/(.*)" />
     <action type="Rewrite" url="api2/{R:1}" appendQueryString="true" />
</rule>

如果有人知道在不修改的情况下为特定站点禁用此功能的方法web.config,请随时分享您的想法。