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

带.asp扩展名的URL无法触发IIS重写规则问题求助

解决Classic ASP站点带.asp URL无法触发重写规则的问题

问题根源

你的重写规则现在碰不上带.asp的URL,大概率是这俩原因:

  1. IIS里ASP模块抢在URL重写模块之前处理请求,发现文件不存在直接返回404,根本没走到重写环节
  2. Cloudflare的缓存或页面规则修改了请求路径,导致规则没匹配上

修复步骤

1. 调整重写规则,兼容带.asp的URL

把现有规则改成下面这样,既能匹配带/不带.asp的URL,又能避免IIS误判:

<rule name="articoliarchiviati" stopProcessing="true">
    <match url="^articoli/archiviati/([0-9]+)-.+(\.asp)?$" />
    <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    </conditions>
    <action type="Rewrite" url="/articoli/archiviati/ArticleRendering.asp?id={R:1}" />
</rule>
  • 匹配规则新增(\.asp)?,不管URL结尾有没有.asp都能命中
  • 保留原有条件,确保只处理不存在的文件/目录请求

2. 提升URL重写模块的处理优先级

IIS模块按顺序处理请求,得让重写模块先干活:

  1. 打开IIS管理器,找到目标站点,点击左侧的模块
  2. 在右侧列表中找到UrlRewriteModule,点击上移,将其挪到ClassicAspModule前面
  3. 保存配置,重启站点

3. 检查IIS双重转义设置

如果URL包含特殊字符,IIS可能直接拦截导致规则不触发:

  1. 站点→请求筛选→右上角编辑功能设置
  2. 勾选允许双重转义,保存设置

4. 排查Cloudflare的影响

  • 临时开启Cloudflare的开发模式(关闭缓存),测试带.asp的URL能否正常重写,排除缓存干扰
  • 检查页面规则:确认有没有针对articoli/archiviati/*的规则修改了请求路径,比如强制跳转或缓存404响应
  • 验证SSL/TLS模式:使用"灵活"或"完全"模式,避免请求在传输过程中被篡改

5. 测试规则有效性

用IIS自带功能验证规则是否匹配:

  1. 站点→URL重写→选中目标规则,点击右侧的测试模式
  2. 输入带.asp的测试URL(比如/articoli/archiviati/32848-violenza-.asp),点击测试查看匹配结果

内容的提问来源于stack exchange,提问作者alena

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 23:05:30