我正在尝试使用子系统使用FW/1在ColdFusion中设置API站点。我想设置省略index.cfm的路由,并为默认路径使用/子系统/操作/项目,但是我不确定是否有办法来执行此操作。从我能找到的东西和其他问题很旧的情况下,该文档并不清楚。
现在,我的应用程序中有以下内容。cfc...
variables.framework = {
trace = false,
reloadApplicationOnEveryRequest = "true",
home = "main.default",
diComponent = "framework.ioc",
diLocations = "/model,/controllers",
SESOmitIndex = true
};
variables.framework.routes = [
{ "$GET/accounts:member/membercount" = "/account/member/membercount" }
];
这导致IIS发生404误差。有什么建议吗?
更新:我确实发现我需要更新IIS以包含URL重写以省略index.cfm,但是,当我尝试致电http://example.com/account/时,我仍然会得到404会员/成员
如果我将URL更改为http://example.com/account:member/membercount,我会遇到IIS错误,"潜在的危险请求。
我希望使用"/"而不是":"来调用URL,但我不确定该怎么做。似乎路线应该能够处理这一点,但是我还没有找到一条路。
这很晚,但是:
看来您正在尝试使用搜索引擎友好的URL。您需要variables.framework
中的generateSES = true
。
,您不需要这个:
variables.framework.routes = [
{ "$GET/accounts:member/membercount" = "/account/member/membercount" }
];
,使用generateSES
选项使这很明显。
,然后在根文件夹中的web.config
文件中
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Rewrite for accounts">
<match url="^accounts/(.*)" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/accounts:{R:1}" />
</rule>
<rule name="RewriteUserFriendlyURL1">
<match url="(.*)" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.cfm/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
这告诉IIS在根文件夹中使用index.cfm文件处理所有URL(从URL省略index.cfm(。现在,您可以使用FW1路由来确定如果不明显的话将执行哪个控制器。
这也通过将/
重写为:
的CC_6从URL结构中删除。