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

web.config配置URL重写规则仅根目录生效子文件夹不生效如何解决

web.config URL重写规则跨子目录生效配置方案

问题根因

原有配置存在两个核心问题:

  • <match>节点的匹配规则仅适配根路径下的请求,子目录路径(例如/en-US/page-xxx)的URL前缀带语言标识,无法被^page-这类开头的规则匹配
  • 3-8号规则逻辑冲突:多个规则同时匹配page-/product-前缀,且设置了stopProcessing="true",排在最前面的en-US规则匹配后直接终止流程,fr-FR、ar-AR的规则永远不会生效

调整后完整配置

仅需将该配置放在根目录的web.config中即可,无需在子文件夹单独放置配置:

<rewrite>
  <rules>        
    <!-- 根目录原有规则 保留 -->
    <rule name="rule 1q" stopProcessing="true">
      <match url="^sayfa-([0-9a-zA-Z-_]+)"  />
      <action type="Rewrite" url="/menu-detay.php?sef={R:1}"  appendQueryString="true" />
    </rule>
    <rule name="rule 2q" stopProcessing="true">
      <match url="^urun-([0-9a-zA-Z-_]+)" />
      <action type="Rewrite" url="/urun.php?sef={R:1}"  appendQueryString="true" />
    </rule>

    <!-- 合并后的多语言子目录规则 -->
    <rule name="Multilingual Page Rule" stopProcessing="true">
      <match url="^([a-z]{2}-[A-Z]{2})/page-([0-9a-zA-Z-_]+)" />
      <conditions>
        <add input="{REQUEST_URI}" pattern="^/(en-US|fr-FR|ar-AR)/" ignoreCase="true" />
      </conditions>
      <action type="Rewrite" url="/{C:1}/menu-detay.php?sef={R:2}" appendQueryString="true" />
    </rule>
    <rule name="Multilingual Product Rule" stopProcessing="true">
      <match url="^([a-z]{2}-[A-Z]{2})/product-([0-9a-zA-Z-_]+)" />
      <conditions>
        <add input="{REQUEST_URI}" pattern="^/(en-US|fr-FR|ar-AR)/" ignoreCase="true" />
      </conditions>
      <action type="Rewrite" url="/{C:1}/urun.php?sef={R:2}" appendQueryString="true" />
    </rule>
  </rules>
</rewrite>

配置说明

  • 匹配规则新增了语言前缀的捕获逻辑,可自动识别en-US/fr-FR/ar-AR三类子目录请求
  • 条件节点限制仅匹配指定的三个语言前缀,避免误匹配其他路径
  • {C:1}取条件中匹配到的语言标识,{R:2}取匹配到的sef参数,自动适配对应语言目录下的处理文件
  • 所有规则统一放在根目录配置,同时支持根路径和子目录的重写需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:54:04