ColdFusion 2016: 是否可以在你的网站根目录中创建一个名为“api”或“rest”的文件夹?

7
我刚安装了ColdFusion 2016(从CF10升级),我注意到每当我尝试访问一个名为“api”的文件夹时,我的webroot中会出现内部500错误。
例如:www.mysite.com/api/
我认为这与新的ColdFusion API REST服务有关,因此我创建了另一个名为“rest”的目录,执行了相同的测试(www.mysite.com/rest/),但仍然收到了另一个500错误。
请参见IIS错误截图:enter image description here 奇怪的是,我不使用ColdFusion REST服务,也没有在ColdFusion管理员中启用它。
我的问题是:
您是否还允许在Web根目录中使用名称为“api”或“rest”的文件夹?还是这些现在是保留的文件夹名称?是否有一种解决方法可以针对特定站点禁用此功能,以便我可以使用这些文件夹名称?
1个回答

14

在Adobe论坛上看到了这个问题的答案:

你无法访问/api/或/rest/的原因是因为那些文件夹有一个cf servlet-mapping。

你可以通过进入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的情况下禁用特定网站,请随时分享您的想法。


1
这太疯狂了!我为此疯狂了几个小时,但无论如何都找不到它。谢谢。 还要注意的是,即使在CF 2018中关闭了“rest”和“api”等内容,这仍然存在问题。 我尝试编辑<cfinstall>/cfusion/wwwroot/WEB-INF/web.xml文件,但没有成功。我只是搞垮了CF实例。 - Keith E. Truesdell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接