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

web.config URL Rewrite排除特定页面解决移动端重定向过多问题

解决移动端URL重写与Response.Redirect导致的循环重定向问题

你的问题核心在于:移动端访问新URL时,先被重写规则导向default.asp,随后ASP代码检测到移动端发起Response.Redirect跳转到default_mobile.asp,但跳转过程反复触发形成循环。以下是两种可行的解决方案:

方案一:添加条件排除移动端页面的重写触发

在现有重写规则中添加条件,确保当请求目标是default_mobile.asp时,不执行重写逻辑,避免意外触发规则:

<rewrite>
  <rules>
    <rule name="SpecificRewrite" stopProcessing="true">
      <match url="^test/([^/]+)/([^/]+)/?$" />
      <conditions>
        <!-- 排除对default_mobile.asp的请求触发重写 -->
        <add input="{REQUEST_URI}" pattern="^/default_mobile\.asp$" negate="true" />
      </conditions>
      <action type="Rewrite" url="default.asp?page=test&amp;id={R:1}&amp;name={R:2}" />
    </rule>
  </rules>
</rewrite>

方案二:移动端直接跳转至专属页面(推荐)

绕过ASP的移动端检测逻辑,直接通过重写规则识别移动端User-Agent,将新URL请求跳转到default_mobile.asp,减少一次HTTP跳转,从根源上避免循环:

<rewrite>
  <rules>
    <!-- 优先处理移动端请求,直接跳转至移动端页面 -->
    <rule name="MobileTestRedirect" stopProcessing="true">
      <match url="^test/([^/]+)/([^/]+)/?$" />
      <conditions>
        <!-- 匹配常见移动端User-Agent -->
        <add input="{HTTP_USER_AGENT}" pattern="(android|iphone|ipad|ipod|blackberry|windows phone|mobile)" ignoreCase="true" />
      </conditions>
      <action type="Redirect" url="default_mobile.asp?page=test&amp;id={R:1}&amp;name={R:2}" redirectType="Temporary" />
    </rule>
    <!-- 桌面端请求继续重写至原页面 -->
    <rule name="SpecificRewrite" stopProcessing="true">
      <match url="^test/([^/]+)/([^/]+)/?$" />
      <action type="Rewrite" url="default.asp?page=test&amp;id={R:1}&amp;name={R:2}" />
    </rule>
  </rules>
</rewrite>

方案说明

  • 方案一适合不希望改动原有ASP移动端检测逻辑的场景,通过条件过滤避免规则误触发。
  • 方案二更高效,直接在服务器层面完成移动端路由,消除两次跳转带来的循环风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:30:48