You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WEB CONFIG URL重写返回404,请求排查规则配置错误

问题分析与解决方案

兄弟,你的Web.config URL重写规则里有两个核心错误,导致服务器返回404,我给你一步步拆解并修正:

错误点解析

  1. 匹配规则的正则完全不符合需求
    你期望的目标访问URL是localhost:62859/football/Liverpool,但你的规则里写的是^review/([0-9]+)/([_0-9a-z-]+)

    • 开头强制要求review/前缀,但你想要的URL里根本没有这个前缀;
    • 第一个捕获组用了[0-9]+(仅匹配数字),但你的分类参数football是字母,完全匹配不上。
  2. 重写目标URL缺失核心页面路径
    你的action里写的是?c={R:1}&t={R:2},这相当于直接指向根目录下的无文件名请求,服务器找不到对应的页面,自然返回404。正确的目标应该是review.aspx?c={R:1}&t={R:2}

修正后的配置

下面是符合你需求的完整重写规则,还加了必要的条件避免冲突:

<rule name="Rewrite Review">
  <match url="^([_0-9a-z-]+)/([_0-9a-z-]+)$" />
  <conditions logicalGrouping="MatchAll">
    <!-- 排除真实存在的文件和目录,避免影响静态资源或已有页面 -->
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
  </conditions>
  <action type="Rewrite" url="review.aspx?c={R:1}&amp;t={R:2}" />
</rule>

规则说明

  • 匹配规则^([_0-9a-z-]+)/([_0-9a-z-]+)$ 会匹配所有形如/分类/标题的URL,两个捕获组分别提取分类(c参数)和标题(t参数),支持字母、数字、下划线和连字符;
  • 条件部分:确保只有当请求的不是真实文件或目录时才触发重写,比如你的网站里有images/logo.png这类静态文件,不会被错误重写;
  • 重写目标:明确指向review.aspx,并将捕获到的参数传递过去,服务器就能正确找到对应的页面处理请求了。

另外别忘了确认你的IIS已经安装并启用了URL重写模块,这是规则生效的前提哦!

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

火山引擎 最新活动