You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Coldbox应用根目录运行正常,部署到IIS子目录时出现404错误

解决Coldbox应用部署到IIS子目录后的路由404问题

1. 修正web.config的URL重写规则

你的问题核心是重写规则未正确适配子目录路径,导致IIS错误解析物理路径。替换现有web.config中的重写规则为以下配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="ColdBox Subdirectory Rewrite" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <!-- 排除已存在的文件、目录和静态资源 -->
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{URL}" pattern="\.(css|js|png|jpg|jpeg|gif|ico|pdf|txt|xml)$" negate="true" />
                        <!-- 限定仅处理MyPlayground子目录下的请求 -->
                        <add input="{URL}" pattern="^/MyPlayground/" ignoreCase="true" />
                    </conditions>
                    <!-- 重写到子目录内的index.cfm,保留路由参数 -->
                    <action type="Rewrite" url="/MyPlayground/index.cfm/{R:1}" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

2. 配置Coldbox的基础URL

在应用的config/Coldbox.cfc文件中,设置正确的baseURL,确保框架路由解析基于子目录:

function configure() {
    settings = {
        baseURL = "/MyPlayground/",
        // 保留其他原有配置项
    };
}

3. 验证IIS站点配置

  • 右键IIS中的MyPlayground子目录,选择转换为应用程序,绑定到正确的Adobe ColdFusion应用程序池。
  • 确认IIS的URL重写模块已启用(可在IIS管理器的功能视图中查看)。
  • 重启IIS站点,使所有配置生效。

4. 测试与排查

  • 访问http://localhost/MyPlayground/Main,检查是否正常加载main.index视图。
  • 若问题仍存在,启用IIS URL重写的日志功能(在URL重写模块的右侧面板中开启),查看规则是否正确匹配请求路径,定位重写逻辑的问题点。

内容的提问来源于stack exchange,提问作者G Allen R Souliere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 10:34:54